如何处理 Promise 链中的相关结果
您的问题询问如何在一系列基于 Promise 的 HTTP 请求中利用先前的结果。为了解决这个问题,我们首先考虑跨依赖承诺共享数据的各种策略。策略的选择取决于您需要访问所有之前的结果还是仅访问最近的结果。
按顺序提供结果
在此模型中,每个结果的结果请求作为参数传递给下一个。然而,访问以前的结果变得具有挑战性。
将结果分配给更高的范围
或者,您可以将结果存储在更高范围的变量中。这允许访问所有以前的结果。
在对象中累积结果
此方法涉及创建一个对象来累积结果。每个请求都会将其结果添加到对象中,从而使所有先前的数据可用。
嵌套 Promise 链
嵌套 Promise 保留对先前结果的访问。每个连续层都提供了一个范围,可以访问所有早期结果。
使用 Promise.all() 打破链条
如果某些请求可以独立运行,您可以使用Promise.all() 等待它们完成。这允许您异步获取结果。
在 ES7 中使用 Async/Await
在 ES7 中,async/await 可以简化异步操作的排序。结果在同一范围内可用,无需多个 .then() 处理程序。
应用于您的示例
在您的特定情况下,API 密钥在多个 HTTP 请求之间传递,你可以:
var r1, r2, r3; callhttp("172.16.28.200", payload).then(function(result1) { r1 = result1.data; // Extract the API key return callhttp("172.16.28.200", payload); }).then(function(result2) { r2 = result2.data; // r1 contains the API key from the previous request return callhttp("172.16.28.200", payload); }).then(function(result3) { r3 = result3.data; // r1 and r2 contain the API keys from the previous requests });
以上是如何管理 JavaScript Promise 链中的相关结果?的详细内容。更多信息请关注PHP中文网其他相关文章!