我想知道是否必须从异步函数中返回,例如:
async function foo() {
return bar(); // bar returns a promise
}
或者我可以做
async function foo() {
bar();
}
因为异步将自动返回一个承诺,但是我应该返回原始的承诺而不是由异步自动创建的新承诺吗?
答案 0 :(得分:0)
保证异步函数返回Promise,但是Promise何时结算以及它传递的内容取决于该函数返回的内容。
答案 1 :(得分:0)
这取决于您是否希望将值传递给链中的下一个Promise。通常最好将值返回给promise,除非它是链中的最后一个函数,或者没有信息要传递(出于某种原因)。
如果调用bar()
的唯一原因是因为它在函数外部引起了一些副作用(更改全局变量,更新DB等),我想您无法返回。但是即使那样,我仍然会为成功返回一些价值,特别是如果bar()
执行I / O。
function bar(){
return 'hello world';
}
async function foo1() {
bar(); // Returns a promise with an empty value
}
async function foo2() {
return bar(); // returns a promise with the _value_ returned from bar()
}
foo1().then(console.log); // undefined
foo2().then(console.log); // 'Hello World'