5 回答
TA贡献1848条经验 获得超2个赞
不是调用async函数就得加上async,而是使用了await的函数必须加上async,如果你调用async函数不加上await,就不用加async。
async函数只是看起来像是同步,其实不是同步,async从来不等待里面的await完成才返回,它会立刻返回,只是它返回的是Promise对象,而不是声明中的返回值类型。
但async函数内部代码执行顺序是和同步一样的,await之后的代码会在await语句之后才执行。
TA贡献1884条经验 获得超4个赞
await
是用同步的形式写异步程序,形式是同步,但是程序是异步执行的,这就是和同步程序的区别。
至于 async
和 await
的无限循环,我在理解 JavaScript 的 async/await 应该是解释清楚了的
顺便提一下,新的 JavaScript 标准好像会允许在顶层代码中使用 await
,这相当于启动程序直接支持异步,从本质上来说并没有什么新奇之处
TA贡献1872条经验 获得超3个赞
一步一await自然和同步没什么多大区别,但是你完全可以让支持异步的代码同时执行啊
async function a(num){return new Promise(resolve=>setTimeout(()=>resolve(num+1), 1000));};
async function b(num){
return await a(num);
};
async function c(){
let t1 = a(1);
let t2 = b(2);
let c = await t1 + await t2;
return c;
};
c().then(d=>console.log(d))
这样只需要等待1秒就可以了。
添加回答
举报