【apicloud】通过await实现异步等待

apicloud经常涉及到异步回调问题,例如当我们需要在函数中异步去请求一些接口时,如果不设置异步等待,你会发现函数执行完毕了,异步回调的参数才陆续返回,导致函数渲染出的数据都是一些空数据。

早期的解决方案是将后继的代码写入异步接口的回调函数中,但如若遇到需要循环调取异步接口的情况该如何解决。


当然目前大多ajax都有提供async属性,设置为false时允许ajax为同步请求。其实原理类似。


接下来介绍一下由async、await、Promise组合实现的异步等待。


await 操作符用于等待一个 Promise 对象。它只能在异步函数 async function 中使用。


举个栗子:

function resolve5200(info) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(info);
        }, 5200);
    })
}

async function smile() {
    let you = await resolve5200('love you');
    console.log(you);
}

上述例子中 resolve520 函数中停留了5.2s:

  • 如果是普通的函数,则console.log中会返回 '' 为空;

  • 但我们使用了异步等待,则you会等待5.2s至异步回调结束后获取对应的数据,再进行console.log,所以得出的结果为'love you'。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论