我应该将单独的功能放入多个回调中吗?

时间:2018-03-22 04:10:49

标签: javascript ajax ecmascript-6 promise

以下代码有效,但我正在寻找改进方法。我想确保通过使用promises正确处理API调用。

doSomething1(resp) {
  if (resp) {
    // Some code here
  } else {
    // Error handling
  }
}

doSomething2(resp) {
  // Some code here
}

fetchData() {
  apiFunctionOne(prop1, prop2)
    .then(resp => {
      this.doSomething1(resp);
      return resp;
    })
    .then(resp => {
      this.doSomething2(resp);
      return resp;
    })
    .then(resp => {
      this.doSomething3(resp);
    })
    .catch(this.errorHandling);
}

doSomething4(resp) {
  if (resp) {
    // Some code here
  } else {
    // Error handling
  }
}

doSomething3(resp) {
  apiFunctionTwo(prop1, prop2)
    .then(this.doSomething4)
    .then(() => {
      this.loading = false;
    })
    .catch(this.errorHandling);
}

最好将每个函数放在单独的then语句中或一个then语句中吗? 我的代码可以改进吗?

1 个答案:

答案 0 :(得分:2)

除非他们正在做异步并且你正在返回一个新的承诺,否则它会使更多的语法混乱IMO:更好地将所有同步代码放入它自己的块中。

apiFunctionOne(prop1, prop2)
  .then(resp => {
  this.doSomething1(resp);
  this.doSomething2(resp);
  this.doSomething3(resp);
  return resp;
})