![](/img/trans.png)
[英]ES6 javascript How to handle errors in a sequence of async/await functions
[英]How to properly await for the resolved value of an ES6 Javascript async function?
为什么这两个代码段输出不同? 在第一个中,当我退出控制台时,我将获得待处理的Promises(当我需要实际值时)。
(() => {
let message = {
actions: [{}]
};
message.actions = message.actions.map(async action => {
action.result = {};
action.result.startAt = await "whatever";
return action;
});
console.log(message);
})();
在第二个代码段中,我得到了实际的解析值...
( async () => {
let message = {
actions: [{}]
};
message.actions[0].result = {};
message.actions[0].result.startAt = await "whatever";
console.log(message);
})();
如果该过程是异步的,则可以使用Promise.all()
或for
循环来等待message.actions
每个元素以返回Promise
值
(async () => { let message = { actions: [{}] }; message.actions = await Promise.all(message.actions.map(async(action) => { action.result = {}; action.result.startAt = await new Promise(resolve => setTimeout(resolve, Math.floor(Math.random() * 1000), "whatever")); return action; })); console.log(message); })();
第一种情况:
您启动了异步任务,而没有等待它完成以请求任务值(不确定原因)。
第二种情况:
您填充结构并立即将其打印出来即可正常工作。
然而await "whatever";
只是"whatever"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.