Javascript承诺不会解决

时间:2016-12-20 08:29:09

标签: javascript promise

我已经编写了以下代码,但它将拒绝而不是解决回调。

(function() {
  var restante = 0;
  'use strict';

  function wait() {
    return new Promise(function(done, reject) {
      setTimeout(function() {
        if (restante = 0) {
          done();
        } else {
          reject();
        }
      }, 2000);
    });
  }
  wait().
  then(function() {
    console.log("First Resolution");
  }).catch(function() {
    console.log("Error occured");
  });
})();

为什么每次都拒绝?

2 个答案:

答案 0 :(得分:5)

您有作业而不是比较:

if (restante = 0)

应该是:

if (restante === 0)

https://jsfiddle.net/6nx92hhf/2/

答案 1 :(得分:2)

if声明中应该是:

if (restante == 0) {
    done();
}

(更好的做法)

if (restante === 0) {
    done();
}

您的完整代码如下所示:

(function() {
  var restante = 0;
  'use strict';

  function wait() {
    return new Promise(function(done, reject) {
      setTimeout(function() {
        if (restante == 0) {
          done();
        } else {
          reject();
        }
      }, 2000);
    });
  }
  wait().
  then(function() {
    console.log("First Resolution");
  }).catch(function() {
    console.log("Error occured");
  });
})();

条件语句需要==(或===),而分配语句包含单个=