2016-12-20 31 views
1

私は次のコードを書いていますが、解決コールバックではなく拒否しようとしています。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"); 
    }); 
})(); 

なぜ毎回拒否されるのですか?

+0

if(restante === 0) '(restante === 0)'にする必要があります。 – rckrd

答えて

5

あなたが代わりに比較の割り当てを持っている:

if (restante = 0)

は次のようになります。

それがあるべきあなたの if声明で

if (restante === 0)

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

+1

Bensは正しいですが、===演算子を使用することをお勧めします – Jackthomson

+0

私の部分にTypo :) – G0dsquad

+0

私に知らせてくれてありがとうございました。 –

2

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

OR(ベター・プラクティス)

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"); 
    }); 
})(); 

条件文は==(または===)が必要です=