【问题标题】:Synchronous call in typescript for angular打字稿中的同步调用角度
【发布时间】:2019-05-09 09:44:05
【问题描述】:

我目前在我的应用程序中遇到问题。 我正在尝试读取多个 JSON 文件,但读取它们的方法会在读取所有文件之前返回。

arrJsonPathFinal 是 JSON 文件的列表。

Promise.all(arrJsonPathFinal.map(url =>
  fetch(url).then(resp => resp.json())
)).then(jsonValue => {
  jsonValue.forEach((json, index) => {
    strJsonData += '"' + arrJsonPath[index] + '":' + JSON.stringify(jsonValue[index]) + ",";
  });
  return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) + "}");
});

您知道如何解决这个问题吗? 试图找到一个带有可观察和承诺的解决方案,但到目前为止,我一无所知。

【问题讨论】:

  • 你所说的“阅读它们的方法”是什么意思?上面的代码在一个函数中,您希望返回return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) + "}"); 行的结果?根据this,你仍然得到Promise,你必须then()它或await它或其他东西。检查这个stackblitz.com/edit/js-i2yrtj

标签: angular typescript promise observable


【解决方案1】:
Promise.all(arrJsonPathFinal.map(url =>
  fetch(url)
)).then(resps => {
      resps.forEach((resp, index) => {
          jsonValue=> resp.json())
          strJsonData += '"' + arrJsonPath[index] + '":' + 
             JSON.stringify(jsonValue[index]) + ",";
   });
    return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) + 
   "}");
 });

【讨论】:

  • 这对我不起作用,因为代码本身显示了一些错误。索引未知等。
猜你喜欢
  • 2018-05-25
  • 2021-07-07
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多