相关疑难解决方法(0)

async/await隐式返回promise?

我读到由async关键字标记的异步函数隐式返回一个promise:

async function getVal(){
 return await doSomethingAync();
}

var ret = getVal();
console.log(ret);
Run Code Online (Sandbox Code Playgroud)

但这不是连贯的...假设doSomethingAsync()返回一个promise,而await关键字将返回promise中的值,而不是promise itsef,那么我的getVal函数返回该值,而不是隐式promise.

那究竟是什么情况呢?由async关键字标记的函数是否隐式返回promises,还是我们控制它们返回的内容?

也许如果我们没有明确地回报某些东西,那么它们会隐含地回报一个承诺......?

更清楚的是,上述和之间存在差异

function doSomethingAync(charlie) {
    return new Promise(function (resolve) {
        setTimeout(function () {
            resolve(charlie || 'yikes');
        }, 100);
    })
}

async function getVal(){
   var val = await doSomethingAync();  // val is not a promise
   console.log(val); // logs 'yikes' or whatever
   return val;  // but this returns a promise
}

var ret = getVal();
console.log(ret);  //logs a promise
Run Code Online (Sandbox Code Playgroud)

在我的概要中,行为确实与传统的return语句不一致.看来,当您从 …

javascript node.js async-await ecmascript-next

85
推荐指数
3
解决办法
4万
查看次数