我需要设置一个'myObject'属性,其值将在2500毫秒后解析。因此,我正在使用Promise功能。
const promise = new Promise(function(resolve,reject) {
setTimeout(function(){
resolve("Success!");
}, 2500);
});
var myObject = {
status : promise.then(function(success) {
return success;
})
};
console.log(myObject.status);
运行此代码时,我会进入NodeJS。
Promise { <pending> }
我在互联网上找到的所有示例都展示了如何调用回调方法。它们都没有说明如何从异步调用中分配属性的值。我非常想自己解决这个问题。仅仅为我指出一个正确的例子将非常有帮助。
答案 0 :(得分:2)
您是否要在承诺解决后设置 status 的值?如果是这样,请不要在promise的值中看到status的值,请在promise的回调中设置status的值:
var myObject = {
status: 'not set'
};
promise.then(() => {
myObject.status = 'set';
console.log(myObject.status);
});
如果您在回调之外console.log
分配status的值,它将显示在调用promise时的值,而不是在promise解决时的值。这就是为什么在上面的示例中,我将呼叫放在回调中。