静下心来的个人专栏
上一篇

链式Promise

广告
选中文字可对指定文章内容进行评论啦,→和←可快速切换按钮,绿色背景文字可以点击查看评论额。
大纲

链式Promise

promise 似乎只是对使用回调和 setTimeout() 函数的某种组合的渐进式改进,但 Promise 的功能远不止表面上看到的那样。具体地说,有许多方法可以将 Promise 链接在一起以完成更复杂的异步行为。

对 then()、catch() 或 finally() 的每次调用实际上都会创建并返回另一个新的Promise。 只有在第一个Promise被fullfiled或reject后,第二个promise才会被处理。 考虑这个例子:

const promise = Promise.resolve(42);

promise.then(value => {
	console.log(value);
}).then(() => {
	console.log("Finished");
});

代码输出如下:

42
Finished

对 promise.then() 的调用会返回一个调用 then() 的第二个 promise。 第二个 then() fullfilment处理程序仅在第一个promise被settled后才被调用。 如果你解开这个例子,它看起来像这样:

const promise1 = Promise.resolve(42);

const promise2 = promise1.then(value => {
  console.log(value);
});

promise2.then(() => {
  console.log("Finished");
});

在这个无链版本的代码中,promise1.then() 的结果存储在 promise2 中,然后调用 promise2.then() 来添加最终的实现处理程序。 对 promise2.then() 的调用也会返回一个 promise。 这个例子只是没有使用这个promise2。

 

总结:

记住一点,Promise调用then方法甚至其他的catch等,返回的始终是一个新的Promise。

版权声明:著作权归作者所有。

X

欢迎加群学习交流

联系我们