美文网首页专题系列
Promise的前世今生

Promise的前世今生

作者: 2018_ieye | 来源:发表于2018-03-15 23:50 被阅读0次

概念

promise对象代表了一个异步操作的结果(成功或失败);

诞生的缘由

在没有promise的时候,当我们处理异步操作时,会使用回调函数作为参数来处理响应结果;如果存在连续多个且有依赖的异步操作时,比如后面的异步操作需要前面异步操作的响应数据作为请求参数,那么我们必须在前面异步操作的回调函数里发送后续的异步操作,以此类推,就会出现“回调地狱”。导致函数过长,阅读性差;因此promise产生了,它采用同步的写法(链式调用)来处理异步回调。

以前的写法

doSomething(successCallback,failCallback);
多个连续异步回调时
doSomething(function successCallback(){
    doSecondSomething(function successCallback(){
      ...
    },failCallback);
},failCallback);

现在的写法

var promise=doSomething();
promise.then(successCallback,failCallback);
或者
doSomething().then(successCallback,failCallback);
多个连续异步回调时
doSomething().then(successCallback,failCallback).then(successCallback,failCallback)

保证
为什么promise可以替代回调嵌套呢?

因为promise定义了几个保证:
1.在javaScript事件队列的当前运行完成之前,回调函数永远不会执行;
2.通过.then方法添加的回调函数,甚至在异步操作完成之后才添加的函数,都会被执行。
3.通过多次调用.then方法,可以添加多个回调函数,它们会按照插入的顺序独立运行。

链式调用
promise的链式调用是因为then()和catch()返回一个新的promise对象,跟原来的不同。

var promise=doSomething();
var promise2=promise.then(successCallback,failCallback);

第二个promise不仅代表doSomething()的完成,也代表了回调函数successCallback或者failCallback的完成

相关文章

  • 讲讲 Promise

    一、什么是 Promise 1.1 Promise 的前世今生 Promise 最早出现在 1988 年,由 Ba...

  • ##Promise前世今生

    Promise前世今生 浏览器事件模型 在浏览器中,JavaScript作为单线程运行;另外,对UI线程操作的安全...

  • Promise的前世今生

    概念 promise对象代表了一个异步操作的结果(成功或失败); 诞生的缘由 在没有promise的时候,当我们处...

  • 将军在上之男昭女惜重生三世千年孽缘

    前世!今生!来世再续! 前世欠谁!今生还!来世再续前缘! 前世因!今生续!来世果!

  • 人死,并非如灯灭……

    “今生,是前世的“来生”,是来生的“前世”。在今生中,我们能见到自己的前世与来生。回溯前世,是为了改善今生;回到今...

  • 前世今生来世缘

    谈何前世情 今生还 今生情 来世还 前世孽债 前世还 未了 今生还 今生欠 今生还 谈何来世还 来世欠 来世还 能...

  • iOS Device ID 的前世今生

    iOS Device ID 的前世今生 iOS Device ID 的前世今生

  • 何世许今生

    前世的怨,今生的恨;前世的悲,今生的苦;前世的善,今世的乐。

  • 前生不欠 今生不见

    若無前世緣,何來今生見 前世不回眸,今生怎擦肩 前世若不欠,今生亦不見 今生且不欠,來生即自願

  • 今生的钥匙,前世的锁!

    今生的钥匙,前世的锁! 2019-05-24 午夜 今生的钥匙,前世的锁, 今生的...

网友评论

    本文标题:Promise的前世今生

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