我知道我们要在函数内使用 await
时使用 async
,但是如果函数返回承诺(不等待它(,我们是否应该以async的名称前缀?p>示例1:
async function fetching() {
return fetch('someUrl')
}
示例2:
function fetching() {
return fetch('someUrl');
}
什么是正确的,示例1或示例2?
async
和 await
只是与承诺一起使用的便利方法。
async function foo(){
return true;
}
与
完全相同function bar(){
return new Promise(resolve => {
resolve(true);
});
}
因为async
将返回值封装在方法完成时已解决的承诺中。
以类似的方式
async function oof(){
let myVal = await foo();
do_something_else();
}
(注意:async
仅在此处使用await
(
与
相同function rab(){
let myVal;
bar().then(val => myVal = val);
}
await
只是使链接更容易
async
功能的结果自动包裹在Promise.resolve
中,这意味着,如果您返回承诺,它将自动解开。本质上,这并不重要。
const delay = x => new Promise(res => setTimeout(() => {
console.log("Resolved");
res();
}, x));
function fetch()
{
return delay(1000);
}
async function fetchA()
{
return delay(1000);
}
(async () =>
{
console.log("Create fetch");
const f1 = fetch();
console.log("Await fetch");
await f1;
console.log("Awaited fetch");
console.log("Create fetchA");
const f2 = fetchA();
console.log("Await fetchA");
await f2;
console.log("Awaited fetchA");
})();