首页 > 解决方案 > 将一个返回 foo 的 promise 映射到另一个返回 bar 的 promise?

问题描述

我有一个函数,它生成一个 XMLHttpRequest 并返回一个带有请求响应的承诺。

但是,我想返回一个仅包含响应中一个字符串的承诺。

例如,而不是承诺解决response = {status, data}等,我只想返回response.data.some_field

我怎样才能做到这一点?

标签: javascriptvue.jsaxioses6-promise

解决方案


如果你在一个 Promise 上调用 .then,你将产生另一个 Promise,它将解析你在回调函数中返回的任何内容。因此,采用您正在创建的当前承诺,然后添加以下内容:

.then((response) => {
  return response.data.some_field;
});

所以也许完整的功能看起来像这样:

function getStuff() {
   return new Promise((resolve, reject) => {
     //somethingWithXMLHttpRequest      
   }).then((response) => {
      return response.data.some_field;
   });
}

推荐阅读