如何使用 jQuery Promises 链接三个异步调用并在它们之间传递数据?
当处理需要顺序执行的三个 HTTP 调用时,请考虑利用 jQuery Promise 来链接调用并促进数据传输。
最初,尝试对两个函数使用延迟对象会产生部分解决方案。然而,将此方法扩展到三个函数需要不同的策略。
链接调用并传递数据
在每个调用中,返回 $.ajax 生成的 jqXHR 对象()。这些对象遵循 Promise 接口,可以使用 .then()/.done()/.fail()/.always() 进行链接。
<code class="javascript">function first() { return $.ajax(...); } function second(data, textStatus, jqXHR) { return $.ajax(...); } function third(data, textStatus, jqXHR) { return $.ajax(...); }</code>
在主函数中,将函数与.then() 如下:
<code class="javascript">function main() { first().then(second).then(third); }</code>
传递给后续函数的 data、textStatus 和 jqXHR 参数源自前面函数中的 $.ajax() 调用。这允许每个函数访问和利用前一个调用的输出。
出于说明目的,下面的演示使用 $.when('foo') 而不是 $.ajax(...) 来提供已履行的承诺。
<code class="javascript">function main() { $.when('foo').then(second).then(third); }</code>
通过以这种方式链接承诺并传递数据,您可以同步有效地执行三个异步调用。
以上是如何使用 jQuery Promises 链接异步调用并在它们之间传递数据?的详细内容。更多信息请关注PHP中文网其他相关文章!