了解Vue和返回以及异步等待

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解Vue和返回以及异步等待相关的知识,希望对你有一定的参考价值。

我是Java和Vue的新手,我很难将自己的头围绕着return,async和await一起工作。我来自Python背景,而JS语法则完全不同

所以...问题的一些背景。...我正在建立一个Vue博客,并使用模块模式创建多个Vuex商店。我还在创建一个函数来从Prismic检索数据。

./ store / blog.js

import {MyFunctions} from "../plugins/myfunctions.js";

export const actions = {
    async retrievePosts() {
        console.log("HELLO")
        return MyFunctions.MyFunction("blog_post");
    }
}

./ plugins / myfunctions.js

import Prismic from "prismic-javascript";
import PrismicDom from "prismic-dom" //importing the Dom
import PrismicConfig from "../prismic.config.js";

export const MyFunctions = {
    MyFunction: async function (doctype) {
        console.log("Before")
        const api = await Prismic.getApi(PrismicConfig.apiEndpoint)
        let blog_post = {}
        const results = await api.query(
            Prismic.Predicates.at("document.type", doctype),
            { lang: "en-us" } //This is a Prismic query option
        )
        console.log("After")
        result = results.results

        return result;
    }
};

这里是我的问题:

  1. [在blog.js中,如果我删除MyFunctions.MyFunction(“ blog_post”)前面的单词“ return”,则不会激活myfunctions.js中的等待。为什么?我之所以这样说,是因为没有返回,控制台记录了“之前”,但没有记录“之后”,并且没有返回任何内容。

对我的启示还有一个问题:

  1. 返回MyFunctions.MyFunction(“ blog_post”)返回哪里?因此,数据返回到retrievePosts(),但是它属于{}的一部分,而我相信它是一个JavaScript对象?难道它变成了{}中的一个属性?
答案

答案1:实际上,您正在以异步方式将函数返回给retrievePosts()的调用方。通过删除return,函数将被执行,但对retrievePosts()函数的调用者没有任何影响。

回答2:The MyFunctions.MyFunction(“ blog_post”)被返回给restorePosts()函数的调用者。

以上是关于了解Vue和返回以及异步等待的主要内容,如果未能解决你的问题,请参考以下文章

vue同时异步执行等待结果返回然后再处理

无法从异步函数获取返回值,等待未按预期工作(Vue API 服务)

NodeJS Express 异步/等待

Javascript-异步等待并获取-返回值,而不是诺言?

异步/等待不等待

promise执行顺序