3 回答
TA贡献1851条经验 获得超5个赞
多亏了其他评论者和一些其他研究await只能用于一个async功能,例如
async function x() {
var obj = await new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({a:42});
},100);
});
return obj;
}
然后,我可以将此功能用作Promise,例如
x().then(console.log)
或在另一个异步功能中。
令人困惑的是,Node.js副本不允许您执行
await x();
与RunKit笔记本环境一样。
TA贡献1827条经验 获得超9个赞
正如其他人所说,您不能在异步函数之外调用“ await”。但是,要解决此问题,可以包装await x();。在异步函数调用中。即
function x() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({a:42});
},100);
});
}
//Shorter Version of x():
var x = () => new Promise((res,rej)=>setTimeout(() => res({a:42}),100));
(async ()=>{
try{
var result = await x();
console.log(result);
}catch(e){
console.log(e)
}
})();
这应该在Node 7.5或更高版本中工作。也适用于铬金丝雀片段。
TA贡献1878条经验 获得超4个赞
因此,根据其他人的建议,await可以在异步内部运行。因此,您可以使用以下代码来避免使用then:
async function callX() {
let x_value = await x();
console.log(x_value);
}
callX();
添加回答
举报