美文网首页
JavaScript异步编程:(三)Promise链式

JavaScript异步编程:(三)Promise链式

作者: fanren | 来源:发表于2022-05-16 16:44 被阅读0次

前言

Promise的实例方法(then、catch、finally)返回的都是一个新的Promise对象,所以可以通过链式的方式,顺序执行几个异步方法;

一般使用

taskOne() {
  return new Promise((resolve) => {
    setInterval(() => {
      resolve(1);
    }, 1000)
  });
},

taskTwo() {
  return new Promise((resolve) => {
    setInterval(() => {
      resolve(2);
    }, 2000)
  });
},

taskThree() {
  return new Promise((resolve) => {
    setInterval(() => {
      resolve(3);
    }, 3000)
  });
},

// 链式调用
this.taskOne().then((value) => {
  console.log(value, 'taskOne')
  return this.taskTwo()
}).then((value) => {
  console.log(value, 'taskTow')
  return this.taskThree()
}).then((value) => {
  console.log(value, 'taskThree');
}).catch((value) => {
  console.log(value, 'error')
})

一、then与catch

then的第二个参数失败后的回调函数,而catch也是失败后的回调函数;

promise.then(null, (value) => {
  console.log(value, "reject");
});

等价于

promise.catch((value) => {
  console.log(value, 'reject');
})

Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获。 所以通常建议使用catch 方法去捕获异常,而不要用 then(null, function(error) {}) 的方式,因为这样只能捕获当前 Promise 的异常。

二、值的传递

1. 异步编程

then内部,创建一个新的Promise,可以使用resolve传递参数,则在下一个then,可以获取到传递的参数值;

2.同步

this.taskOne().then((value) => {
  console.log(value, 'taskOne')
  return value + 2;
}).then((value) => {
  console.log(value, 'taskTwo');
})

then内部,直接使用return返回值,则在下一个then,可以获取到传递的参数值;

相关文章

  • JavaScript异步编程:(三)Promise链式

    前言 Promise的实例方法(then、catch、finally)返回的都是一个新的Promise对象,所以可...

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • ES6 之 Promise

    Promise是JavaScript异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步...

  • 【ECMAScript6】 Promise

    Promise 是什么 Promise 是 ES6 为 JavaScript 异步编程定义的全新 api 。为异步...

  • Java实现Promise.all()

    JavaScript的Promise.all() Promise是JavaScript异步编程的一种解决方案,在E...

  • 异步

    JavaScript异步编程解决方案笔记 JavaScript Promise迷你书 Node.js回调黑洞全...

  • Async/Await 函数用法

    JavaScript编程异步操作解决方案:回调函数 => Promise对象 => Generator函数 => ...

  • es6-promise

    Promise 是 JavaScript 异步编程中的重要概念,异步抽象处理对象,是目前比较流行 Javascri...

  • 循序渐进实现Promise

    使用JavaScript循序渐进实现一个简单的Promise,支持异步和then链式调用。翻译并整理自Medium...

网友评论

      本文标题:JavaScript异步编程:(三)Promise链式

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