javascript - ES6 Promise then() 履行处理程序返回值有什么用?

标签 javascript es6-promise

据说inside a .then() fulfillment handler, if a value v1 (a non promise object) is returned, then the promise as returned by then() will be a resolved promise, with the resolved value v1 .

但是这个功能有什么用呢?如果我们立即解决这个 promise ,我们也可以直接在这个 then() 履行处理程序的下面编写代码。

示例:

myPromise.then(function(someV) {
  // ...
  return v1;
}).then(function(v) {
  // some code

也就是说,我们也可以将//some code移动到第一个履行处理程序中。

(我认为通常的用例是返回一个 new Promise() 以便我们可以链接 Promise。)

最佳答案

这是一个很好的问题。在其他“monadic 构造”中,有两个函数可以实现此目的(一个用于映射,另一个用于映射 Promise),但在 2013 年的某个时候,决定不在 JavaScript 中执行相同的操作并允许返回值。

这对于使用 Promise 链接操作而不执行异步操作是有意义的。例如:

fetch('./foo').then(x => x.json()).then(JSON.parse);

最后一个 JSON.parse 部分与 Promise 或异步操作无关。

关于javascript - ES6 Promise then() 履行处理程序返回值有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59488779/

相关文章:

javascript - 为什么这不是按照我期望的方式添加类(class)?

javascript - 如何避免Fabric.JS中.animate方法的中断

javascript - 使用 Protractor 进行 e2e 测试的 Google 优化

javascript - 即使我有 catch() 函数,为什么也会收到 UnhandledPromiseRejectionWarning?

javascript - 如何使用 Jasmine 2.0 测试 ES6 Promise?

javascript - 在 js 中返回 promise 的链接函数

javascript - 使用 httpPost 的 422 响应返回 {"response":{}} instead of the actual API response

javascript - 元素jQuery的图像调整大小

javascript - 在 Node.js 中使用 forEach 循环 Promise All

javascript - 如何在不同的输入标签上执行函数?