我正在尝试隐藏一些进行计算的代码的延迟。
下面是示例。 在以下第一种情况中,我得到了预期的答案:
async function calculateStuff(thing) {
//do stuff here
return {"a": a, "b": b, "c": c};
}
const data = await calculateStuff(obj); //takes a while
const first = data["a"] //valid data
const second = data["b"] //valid data
const third = data["c"] //valid data
我希望通过以下两种方法之一来隐藏calculateStuff的延迟,但是这两种方法都会使我的变量变为未定义:
async function calculateStuff(thing) {
//do stuff here
return {"a": a, "b": b, "c": c};
}
data = calculateStuff(obj); //takes a while
//...other calculations here...
await data;
const first = data["a"] //undefined
const second = data["b"] //undefined
const third = data["c"] //undefined
同样地:
async function calculateStuff(thing) {
//do stuff here
return {"a": a, "b": b, "c": c};
}
data = calculateStuff(obj); //takes a while
//...other calculations here...
const first = await data["a"] //undefined
const second = await data["b"] //undefined
const third = await data["c"] //undefined
我做错了什么?
async
-await
是无法实现的。 - md2perpeconst data = await calculateStuff(obj);
中,data
是结果对象(Promise 的完成值)。在const data = calculateStuff(obj);
中,data
是一个 Promise 对象,它没有["a"]
/["b"]
/["c"]
属性。 - Bergi