异步函数,用于确定JavaScript对象中属性的值

时间:2018-07-23 12:45:56

标签: javascript asynchronous promise es6-promise

我需要设置一个'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> }

我在互联网上找到的所有示例都展示了如何调用回调方法。它们都没有说明如何从异步调用中分配属性的值。我非常想自己解决这个问题。仅仅为我指出一个正确的例子将非常有帮助。

1 个答案:

答案 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解决时的值。这就是为什么在上面的示例中,我将呼叫放在回调中。