一段时间以来,我一直想知道简单返回承诺时的async
关键字是否多余?
请考虑以下内容:
async function thePromise() {
const v = await Inner();
return v+1;
}
async function wrapper() {
return thePromise();
}
我一直想知道wrapper
函数,因为它不等待承诺的解决,所以async关键字会不会是多余的?而且我们不应该只使用:
function wrapper() {
return thePromise();
}
一个明显的缺点是,这种格式会使我们混淆使用诺言,但除此之外:从异步函数或普通函数返回诺言是否有实际区别?
答案 0 :(得分:0)
考虑这个简单的演示:-
autoApply
答案 1 :(得分:0)
因为在javascript中没有诸如Promise of Promise之类的东西,所以它们是等效的
// code 1
promise1.then(() => {
//...
return promise2;
}).then(f);
// is equivalent to code 2
promise1.then(() => {
//...
return promise2.then(f);
});
异步函数也会发生同样的事情,从异步函数返回一个承诺等于返回等待的表达式
// code 3
async () => {
// ...
return p;
}
// is equivalent to code 4
async () => {
// ...
return await p;
}
要注意的一件事是,它不适用于promise之类的数组。对于这些情况,您可以用Promise.all
包装该数组,以将promise数组变成一个promise数组,或者为其他数据结构编写自己的代码。