当前位置: 首页 > 知识库问答 >
问题:

单个异步函数,使多个读取和返回结果?[重复]

束研
2023-03-14

我试图写一个异步函数,使多个读取,等待所有完成,然后返回JSON结果作为一个数组。这是我到目前为止所拥有的:

文件1。js

const searchResults = await Api.search(searchText);

应用程序编程接口。js

async function search(searchText) {
    return util.executeFetchAll([
        `/searchA/${searchText}`,
        `/searchB/${searchText}`,
        `/searchC/${searchText}`
    ]);
}

util.js

async function executeFetchAll(urls) {
    const promises = urls.map(url => fetch(url));
    const responses = await Promise.all(promises);

    debugger;
}

当执行在调试器处暂停时,我使用Chrome的开发工具检查响应,它正确地是由3个响应对象组成的数组,但如果我检查响应[0]。json(),它奇怪地在控制台中返回一个promise{

我错过了什么?我正在等待Promise.all,这应该意味着所有的promise在我的调试器行之前解决。那么,为什么json()方法奇怪地显示一个处于挂起状态的Promise对象呢?

谢谢。


共有1个答案

汲品
2023-03-14

响应。json()返回promise!见:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

所以你可以用这样的方式等待他们:

await Promise.all(responses.map(r => r.json()));
 类似资料:
  • 我正在使用带有节点的数据库。js。以下请求可以正常工作: 我想异步返回多个的结果,但以下操作失败: 然后我必须在每个元素上调用,所以在调用函数时: 然而我得到: 还有点奇怪: 我怀疑我遗漏了的工作方式,那么如何返回多个结果的已实现结果呢?

  • 问题内容: 我试图创建一个可以异步运行多个进程并发送响应的函数。由于不返回响应,因此我想创建一个函数为: 在此函数中,我异步调用,它接受的其他参数。由于列表是作为参考传递的,所以我认为我可以在列表中附加实际功能的响应。和将返回我所有的功能的响应。 但这并不符合我的预期。值会附加到中的,但工作人员列表外部仍为空。 知道我在做什么错吗?而且,有没有其他选择可以实现我的目标? 问题答案: 您不能直接在流

  • 我对Firebase/Firestore/Cloud函数相当陌生,一直在尝试一个小项目,在这个项目中,客户端应用程序调用Firebase Cloud函数来生成一些随机键(随机数),将它们添加到Firestore,成功编写后,将这些键返回到客户端应用程序。有点像随机数发生器。 客户端正确调用该函数(根据Firebase控制台),确实生成密钥,检查它们是否存在于Fi还原中,如果不添加它们。所有的工作直

  • 我一直在使用异步任务来访问web服务器,并使用结果更新控件。这有缺点,即它使异步方法特定于控件,并阻止我再次使用返回的字符串。 我的典型asyncTask代码如下

  • 问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用

  • 更新 我已经读了十几篇关于这个话题的文章,但没有一篇涉及到这个基本问题。我将在本文末尾列出一个参考资料部分。 原始帖子 我对函数的理解是,它返回一个promise。 MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function 在我的程序中,我可以编写如下内容: 我