为了账号安全,请及时绑定邮箱和手机立即绑定

关于async/await的一些疑问?

关于async/await的一些疑问?

冉冉说 2019-05-19 14:28:49
感觉用了这个语法就变成同步操作了额,那和普通的同步操作有什么区别吗?还有就是我在一个函数里调用async函数,那么这个函数就得加上async,这么循环下去不会形成死循环吗?async a(){};async b(){    let b = await a()};async c(){    let c = await b()};...
查看完整描述

5 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

不是调用async函数就得加上async,而是使用了await的函数必须加上async,如果你调用async函数不加上await,就不用加async。

async函数只是看起来像是同步,其实不是同步,async从来不等待里面的await完成才返回,它会立刻返回,只是它返回的是Promise对象,而不是声明中的返回值类型。

但async函数内部代码执行顺序是和同步一样的,await之后的代码会在await语句之后才执行。


查看完整回答
反对 回复 2019-05-19
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

这个问题也困扰我好久了。好像得层层 async await 不然中间断了一个就返回 Promise 了,头大


查看完整回答
反对 回复 2019-05-19
?
慕村9548890

TA贡献1884条经验 获得超4个赞

await 是用同步的形式写异步程序,形式是同步,但是程序是异步执行的,这就是和同步程序的区别。

至于 async 和 await 的无限循环,我在理解 JavaScript 的 async/await 应该是解释清楚了的

顺便提一下,新的 JavaScript 标准好像会允许在顶层代码中使用 await,这相当于启动程序直接支持异步,从本质上来说并没有什么新奇之处


查看完整回答
反对 回复 2019-05-19
?
守着一只汪

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秒就可以了。


查看完整回答
反对 回复 2019-05-19
  • 5 回答
  • 0 关注
  • 916 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信