javascript - 将 fetch 调用到 fetch 的 Promise 中是一种不好的做法吗?

标签 javascript fetch

我正在培训 fetch() 的使用。

正如您在下面的代码中看到的,我决定将一次提取放入第一次提取的 promise 中,但即使该代码工作正常,我也不确定这是一个好还是一个坏做法。

如果编写的代码是一种不好的做法,有人可以向我提出一个好的做法吗?

提前谢谢您。

function callOne () {
   let q = 'q='+input.value;
   fetch(urlOne)
      .then(res => res.json())
      .then(data => {
         console.log(data);
            callTwo(q);
       })
       .catch(err => {
          console.log(err);
    });
 }

function callTwo(q) {    
  fetch(urlTwo)
     .then(res => res.json())
     .then(data => {
        console.log(data);
     })
     .catch(err => {
         console.log(err);
  });
}

最佳答案

这取决于,当它们像在代码中一样独立时,您可以并行运行它们。像这样:

Promise.all([callOne(), callTwo()]).then(([dataOne, dataTwo]) => {/**/})

这样它们就不会嵌套,并且可以更好地维护它们。并且会做得更快。但是,如果您必须等待第一个数据传递到第二个数据,那么您必须像以前一样这样做。不过,我想我会这样写:

callOne()
  .then(/*do something with first response and pass to second call*/)
  .then(callTwo)
  .then(/*do something with second data*/)

在这两种情况下,如果在调用函数中返回获取的数据会更好。 return fetch(...).then(...).catch(...) 这样你就可以像正常链接 Promise 一样链接那些内容。 callOne().then(...)

关于javascript - 将 fetch 调用到 fetch 的 Promise 中是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46099156/

相关文章:

javascript - 词干查询elasticsearch

javascript - 将动态 XML 内容检索到 Perl 中的变量中

MeekroDB 中的 mysql_fetch_assoc

post - 提取API无法加载网址。飞行前响应无效(重定向)

php - mysql取数组报错2

javascript - 像浏览器一样获取视频部分

javascript - 有没有办法单击一个选项并在其下方弹出另一个选项?

javascript - react 计算属性

javascript - 返回特定屏幕而不是第一个屏幕 react-native-navigation

用于获取从 iTunes 同步到 IOS 设备的视频的 IOS API