我理解当我们想在函数中使用async
时我们使用await
,但如果函数返回一个promise(没有等待它),我们应该在名称前添加异步吗?
示例1:
async function fetching() {
return fetch('someUrl')
}
示例2:
function fetching() {
return fetch('someUrl');
}
更合适的是,示例1还是示例2?
答案 0 :(得分:0)
async
和await
只是处理承诺的便捷方法。
async function foo(){
return true;
}
与
完全相同function bar(){
return new Promise(resolve => {
resolve(true);
});
}
因为async
将返回值封装在一个promise中,当方法完成时,它会被解析。
以类似的方式
async function oof(){
let myVal = await foo();
do_something_else();
}
(注意:async
只能在这里使用才能使用await
)
与
相同function rab(){
let myVal;
bar().then(val => myVal = val);
}
await
只是让链接更容易
答案 1 :(得分:0)
async
函数的结果会自动包含在Promise.resolve
中,这意味着如果您返回Promise,它将自动解包。从本质上讲,这无关紧要。
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");
})();