2016-12-20 4 views
1

Ich habe den folgenden Code geschrieben, aber es wird zurückweisen, anstatt Callback zu lösen.Javascript Promise Wont Resolve

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

Warum wird es jedes Mal abgelehnt?

+0

Sie haben einen Tippfehler in der if-Anweisung .... 'if (restante = 0)' sollte 'if (restante === 0)' – rckrd

Antwort

5

Sie haben einen Auftrag anstelle eines Vergleichs:

if (restante = 0)

Sollte sein:

if (restante === 0)

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

+1

Bens Recht, aber es ist gute Praxis, den Operator === – Jackthomson

+0

zu verwenden Tippfehler meinerseits :) – G0dsquad

+0

Vielen Dank für die Mitteilung. –

2

In Ihrem if Aussage sollte es sein:

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

OR(Bessere Praxis)

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

Ihre vollständige Code wird wie folgt aussehen:

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

Bedingte Anweisungen erfordern == (oder ===), während die Zuweisung Aussagen enthalten, die einzelne =.