承诺的例子然后

时间:2017-02-15 15:52:38

标签: javascript

最近我听到'承诺',并试图了解它的工作原理并说...... 它运作不佳。

    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'子句呢?

您的回复将不胜感激。

3 个答案:

答案 0 :(得分:1)

Promises有两个论点: resolve&amp;拒绝 ,这将是 .then()&amp;中定义的要执行的功能。 .catch() 即可。因此,为了能够打印完成&#39;或者&#39;错误&#39;你应该这样做:

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'

答案 1 :(得分: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始终处于待定状态。

答案 2 :(得分: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');