美文网首页
JavaScript同步--Promise

JavaScript同步--Promise

作者: Vuji | 来源:发表于2016-07-22 14:24 被阅读0次

    1. 创建Promise

      var myPromise =  new Promise(function(resolve, reject){})
    

    resolve : 执行成功调用方法
    reject : 执行失败调用方法

    2. 使用Promise

      function testSuccess(data){
        console.log(data);
      }
    
      function testError(data){
        console.log(data);
      }
    
      function test(resolve,reject){
         if(true){
           resolve(1);
          }else{
            reject("错误");
          }
      }
    
      var testPromise = new Promise(test);
    
      testPromise.then(testSuccess).catch(testError);
    

    new Promise() : 新建Promise
    testPromise处理过程,处理完成后,调用resolve或者reject方法
    testPromise.then(testSuccess)then中的testSuccess即为Promiseresolve方法
    testPromise.catch(testError)catch中的testError即为Promisereject方法

    3. 多个Promise连环调用

      function anotherPromise(val){
        return new Promise(function(resolve,reject){
                 resolve(++val);
          })
      }
    
      var testPromise = new Promise(test);
      testPromise.then(anotherPromise).then(anotherPromise).then(testSuccess).catch(testError);
    

    通过返回Promise 可以实现Promise的连环调用。如:在一个ajax结束后再进行另外一个ajax

    4. 多个Promise同时调用,返回所有数据

       var p1 = new Promise(function (resolve, reject) {
        setTimeout(resolve, 500, 'P1');
      });
      var p2 = new Promise(function (resolve, reject) {
        setTimeout(resolve, 600, 'P2');
      });
      // 同时执行p1和p2,并在它们都完成后执行then:
      Promise.all([p1, p2]).then(function (results) {
        console.log(results); // 获得一个Array: ['P1', 'P2']
      });
    

    可以同时执行多个Promise,在全部完成后调用resolve

    5.多个Promise同时调用,返回最快resolve的数据

      var p1 = new Promise(function (resolve, reject) {
          setTimeout(resolve, 500, 'P1');
      });
       var p2 = new Promise(function (resolve, reject) {
          setTimeout(resolve, 600, 'P2');
       });
       Promise.race([p1, p2]).then(function (result) {
          console.log(result); // 'P1'
       });
    

    相关文章

      网友评论

          本文标题:JavaScript同步--Promise

          本文链接:https://www.haomeiwen.com/subject/kilijttx.html