同步调用多个API并立即显示结果

Posted

技术标签:

【中文标题】同步调用多个API并立即显示结果【英文标题】:call multiple APIs synchronously and show results immediately 【发布时间】:2013-08-13 08:28:20 【问题描述】:

我在 jQueryMobile 和 PhoneGap 工作。 目前我面临一个大问题。当我单击一个按钮时,它会一一调用多个 API 并一一获取结果。但是在结果页面中,它只有在获得所有 API 的所有结果后才会显示。

在我的应用程序中,当我提交按钮并返回一个 JSON,其中包含要调用的不同 API 列表

然后我们异步调用每个API

我们一一得到所有结果。并且只有在获得所有结果后才会显示结果。

那么我的问题是,当我获得第一个 API Result 并在后台结果页面中显示数据时同时调用所有其他 API 时,有什么方法可以显示结果页面?

目前用于显示结果页面需要超过 30 秒的时间。但是我们需要在获得第一个 API 结果时显示结果页面。我们得到 JSON 格式的结果。

任何人都可以帮助我:( 我失去了 1 周的时间来解决这个问题!

【问题讨论】:

如果您将结果一一放入 DOM,它们应该会立即显示出来。还是从表单内部发送? 我们不是从表单内部发送的 你能分享执行ajax请求和更新DOM的代码吗? 可能是您在 ajax 请求中设置了 async:false 。将其更改为 async:true 或删除该行,默认情况下 async 设置为 true。 @abhidsm 我们一一得到结果。但它仅在从所有 API 获取所有结果后附加到 html 【参考方案1】:

有许多 HTML 模板解决方案可用 jQuery Templates、Underscore 和 Mustache 等,最好使用 Mustache 我认为可以解决您的问题。如果您在项目中处理如此多的 DOM 操作,最好使用任何模板。 例如:

HTML 模板

<h1>header</h1>
#bug
/bug

#items
  #first
    <li><strong>name</strong></li>
  /first
  #link
    <li><a href="url">name</a></li>
  /link
/items

#empty
  <p>The list is empty.</p>
/empty

JSON 数据


  "header": "Colors",
  "items": [
      "name": "red", "first": true, "url": "#Red",
      "name": "green", "link": true, "url": "#Green",
      "name": "blue", "link": true, "url": "#Blue"
  ],
  "empty": false

输出 HTML

<h1>Colors</h1>
<li><strong>red</strong></li>
<li><a href="#Green">green</a></li>
<li><a href="#Blue">blue</a></li>

【讨论】:

以上是关于同步调用多个API并立即显示结果的主要内容,如果未能解决你的问题,请参考以下文章

同步与异步,阻塞与非阻塞

同步异步阻塞非阻塞 总结

在 react redux saga 中处理同步

Python-异步编程

为啥我的贝宝 api 调用失败并出现错误版本不支持?

Angular 6 - 同步调用多个API