有多种方法可以从javascript中的异步调用返回响应。让我们首先了解问题。假设您有一个名为foo的函数,该函数是异步的,将在一段时间后提供数据。它可以通过两种方式做到这一点。它可以接受准备好对数据执行时将调用的回调。或者它可以返回承诺。
例如,setTimeout函数接受一个回调并在固定的时间后执行它。因此,假设您采用第一种方法,则可以在setTimeout中传递该函数。
function myFunc(cb) { setTimeout(() => cb(100), 1000); } myFunc((a) => console.log(a))
输出结果
100
这将使用回调函数调用setTimeout函数,该回调函数将在1000毫秒后执行。当执行该函数时,它将使用setTimeout的回调返回的值调用传递的callback(cb)。
使用承诺
您也可以使用promises做到这一点。用承诺包装您的异步函数,并使用函数的返回值解决此承诺。您可以链接then方法并将其传递给回调函数以使用从async函数返回的值。
,
new Promise(resolve => setTimeout(() => resolve(100), 1000)) .then(console.log)
输出结果
100