new Promise 结合ajax 单个请求与多个请求写法

前言:忽如一夜春风来,千树万树梨花开,今天的天气突然变得很冷,又是保暖之际。由于自己隔段时间会把promise的写法忘记,又参考了廖雪峰大大的学习文章,小记写法汇总。

单个ajax请求执行写法

new Promise(function (resolve, reject) {
   log('start new Promise...');
    var timeOut = Math.random() * 2;
    log('set timeout to: ' + timeOut + ' seconds.');
    setTimeout(function () {
        if (timeOut < 1) {
            log('call resolve()...');
            resolve('200 OK');
        }
        else {
            log('call reject()...');
            reject('timeout in ' + timeOut + ' seconds.');
        }
    }, timeOut * 1000);
//此处可以写入ajax操作函数
}).then(function (r) {
    log('Done: ' + r);
}).catch(function (reason) {
    log('Failed: ' + reason);
});

多个ajax请求执行写法

  function multiply(input){
    return new Promise(function(resolve,reject){
     //此处可以写入ajax操作函数,第二个ajax请求
     $.ajax({
      "type":"get/post",
      "async":true,
      "url":'',
      "data":JSON.stringify({"name":value})|| "",
      "success": function(res){
        resovle(res);
      },
      "error": function(err){
        reject(err);
      }
    })
    })
  }

// 0.5秒后返回input+input的计算结果:
function add(input) {
    return new Promise(function (resolve, reject) {
 //此处可以写入ajax操作函数,第三个ajax请求
     $.ajax({
      "type":"get/post",
      "async":true,
      "url":'',
      "data":JSON.stringify({"name":value})|| "",
      "success": function(res){
        resovle(res);
      },
      "error": function(err){
        reject(err);
      }
    })
    });
}

var p = new Promise(function (resolve, reject) {
//此处可以写入ajax操作函数,第一个ajax请求
     $.ajax({
      "type":"get/post",
      "async":true,
      "url":'',
      "data":JSON.stringify({"name":value})|| "",
      "success": function(res){
        resovle(res);
      },
      "error": function(err){
        reject(err);
      }
    })
});

p.then(multiply)
 .then(add)
 .then(multiply)
 .then(add)
 .then(function (result) {
    log('Got value: ' + result);
});

 

你可能感兴趣的:(Js)