鍍金池/ 問答/iOS  HTML/ 互相依賴的異步請求, 應該怎么簡寫?

互相依賴的異步請求, 應該怎么簡寫?

邏輯是這樣的:
電話號碼 =》獲取所在城市名稱 =》 獲取城市代碼 =》 獲取城市天氣

下一次的請求都會用到上次請求的結(jié)果

我試了下面的兩種寫法,感覺都很啰嗦,有沒有什么好的寫法呢?

// async
onFetchPosition = async () => {
    const { actions } = this.props;
    const data = await API.fetchPosition(this.state.number);
    const city = await API.fetchCityCode(data.data.result.province);
    const weather = await API.fetchWeather(city.data.code);
    actions.fetchPhonePosition(data.data.result);
    actions.fetchCityCode(city.data);
    actions.fetchWeatherInfo(weather.data.weatherinfo);
}
// promise
 onCheckPosition = () => {
    new Promise((resolve) => {
      API.fetchPosition(this.state.number, (position) => {
        this.props.actions.fetchPhonePosition(position);
        resolve();
      });
    }).then(() => {
      API.fetchCityCode(this.props.position.province, (city) => {
        this.props.actions.fetchCityCode(city);
        API.fetchWeather(this.props.position.code, (weather) => {
          this.props.actions.fetchWeatherInfo(weather);
        });
      });
    }).catch((error) => {
      throw new Error(error);
    });
  };
回答
編輯回答
你好胸

不是回答的回答
為什么不讓后端來做,直接把電話給后端,后端聚合電話號碼所在的城市和天氣一起返回給你。。。多簡單

2017年3月25日 13:06
編輯回答
撥弦

你的寫法已經(jīng)算是最好的寫法了,目前 async 已經(jīng)算是處理回調(diào)地獄最好的方式了

2018年5月1日 08:42