如何在返回函数的变量之前等待承诺完成?
这里的 promise 是从异步函数返回的对象,可以根据前一个函数的结果添加回调方法。它是为像队列或函数链一样的函数的背靠背执行而完成的。因此,当函数在队列中时,它后面的函数必须等待前一个函数的结果。为此,有两种流行的方法如下所述。
- 使用 setTimeout()函数
- 使用 async 或 await()函数
setTimeout()函数的使用:为了在返回变量之前等待一个promise完成,可以用setTimeout()设置函数,让函数等待几毫秒。
下面的程序将说明该方法:
程序 :
输出:
waited for 2 seconds
waited for 4 seconds
This is failure callback
使用 async 或 await()函数:如果无法指定 setTimeout() 中所需的确切时间,则可以使用此方法。 async 关键字用于创建一个异步函数,该函数返回一个被拒绝或解决的承诺。当该函数抛出未捕获的异常或以其他方式解决时,promise 将被拒绝。 await 关键字在异步函数中用于暂停其执行并等待承诺。
下面的程序将说明该方法:
程序 :
输出 :
async function called
Entered first function
Returned first promise
After awaiting for 2 seconds, the promise returned from first function is:
This is first promise
Entered second function
Returned second promise
After awaiting for 4 seconds, the promise returned from second function is:
This is second promise