编程学习笔记

【promise-02】Promise较之回调的优势

2018-12-14  本文已影响0人  飞蝗tengda

Promise 优势

回调

假如有一个第三方的库,它有一个方法,我们传了一个方法,它做了一个异步的操作:一秒后调用我们的回调函数,因为某些原因被多调用了一次,也就是说我们不能保证,这个回调函数会如预期一样运行。这就是一个信任问题。

// 第三方的某个库
function method(cb) {
  // 未按所想的预期执行回调
  setTimeout(function() {
    // 讲道理应该是现在该调用回调了
    cb && cb();
    // 但是?? 好像这个库有bug啊 em... 被多调用了一次
    cb && cb();
  }, 1000);
}

promise

// promise一但被确定为成功或者失败 就不能再被更改

function method() {
  return new Promise(resolve => {
    setTimeout(function() {
      // 成功会调用resolve,之后再调用就不灵了
      resolve();
      resolve();
    }, 1000);
  });
}

//回调
function method(cb) {
  // 未按所想的预期执行回调
  setTimeout(function() {
    // 或者执行回调 但是添油加醋
    cb && cb.call({a: 1, b: 2});
  }, 1000);
}
//promise
function method(cb) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(); // 调用的resolve全为自己所写书写的流程 很大程度上改善了反转控制的问题
    }, 1000);
  });
}
上一篇下一篇

猜你喜欢

热点阅读