2017-02-15 8 views
-1

最近、私は「約束」を聞いて、それがどのように働いているかを学ぼうとしました... それはうまくいきません。約束の例

function example(){ 
 
     return new Promise(function(){ 
 
     var i=0; 
 
     while(i<5000){console.log(i);i++;} 
 
     }) 
 
    } 
 
      
 
    example() 
 
    .then(
 
     function(){ 
 
     console.log('done') 
 
     }, 
 
     function(){ 
 
     console.log('error') 
 
     });

それは句「を」どのように私はそれを書くことができます。.. 1から4999を書き込みますが、[完了 'または「エラー」に書き込むことはありませんか?

ご返信いただければ幸いです。 解決&を関数となり.then()& .catch()で定義されるように実行されるリジェクト:

+1

'プロミス(関数(決意、リジェクト){'代わりプロミス(関数(){ ''のとの体内の約束関数はループの後に 'resolve();'を置きます。 – Xufox

+0

これら2つの匿名関数は定義されておらず、実際には実行されませんか? – hauron

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –

答えて

1

約束は2つの引数を取得します。私は問題で発見した

function example(condition){ 
    return new Promise(function(resolve, reject){ 
    var i=0; 
    while(i<5000){console.log(i);i++;} 
    if(condition){ 
     resolve(); 
    } else { 
     reject(); 
    } 
    }) 
} 
example(true).then(function(){console.log('done')},function(){console.log('error')});//Prints 'done' 

example(false).then(function(){console.log('done')},function(){console.log('error')});//Prints 'error' 
0

function example() { 
 
    return new Promise(function(resolve,reject) { 
 
    var i = 0; 
 
    while (i < 5000) { 
 
     console.log(i); 
 
     i++; 
 
    } 
 
    resolve(i); 
 
    }) 
 
} 
 

 
example() 
 
    .then(
 
    function() { 
 
     console.log('done') 
 
    }, 
 
    function() { 
 
     console.log('error') 
 
    });
ので、「完了」または「エラー」を印刷し得ることができるようにあなたはこのような何かを行う必要があります

解決してコールバックを拒否する必要があります。コードではPromiseは常に保留状態のままです。

+0

はい、今私はそれが私がそれを見逃したことに気づいた。 あなたの優しい答えをありがとう。 –

0

何かのような... https://www.promisejs.org/patterns/

例:

function example() { 

     return new Promise(function(resolve, reject){ 

     try{ 

      var i = 0; 

      while(i < 5000){ 

      console.log('proccess',i); 

      i++; 

      } 

      resolve(i);// an if, to resolve or reject... 

     } catch(error) { 

      reject(error); 

     } 

     }); 

    } 

    console.log('will call the promise'); 

    example().then(function(success){ 

     console.log('caller promise result', success); 

    }).catch(function(error){ 

     console.log('if some problem, catch',error.toString()); 

    }); 

    console.log('Here, will be before or after the promise resolves'); 
+0

あなたの優しい答えをありがとう..今私はそれを得たと思う:) –