Sun*_*nil 2 javascript asynchronous promise async-await es6-promise
我正在尝试从调用rest api 的方法返回一些测试数据。为了模拟其余 api 调用,我添加了一些延迟以使用异步等待模式返回承诺,但它没有按预期工作。
我对 JavaScript 中异步等待模式的理解是,从异步函数返回的任何值都会作为承诺返回,因此函数应该将值 100 作为承诺返回,因此最后一个语句 using 应该.then显示 100,但事实并非如此。
问题
下面的代码片段有什么问题导致最后一行代码中显示警报而undefined不是 100?
async function f() {
function delayedResponse() {
setTimeout(function() { return 100}, 5000);
}
return await delayedResponse();
}
f().then(alert); // 100Run Code Online (Sandbox Code Playgroud)
您没有返回任何内容,delayedResponse因此结果是undefined.
相反,为了实现您的期望 - 您可以显式创建 Promise并使用超时解析值;
async function f() {
return new Promise(resolve => {
setTimeout(function() { resolve(100)}, 5000);
});
}
f().then(alert); // 100Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |