Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中通知上次web服务调用何时完成?_Javascript_Axios - Fatal编程技术网

如何在Javascript中通知上次web服务调用何时完成?

如何在Javascript中通知上次web服务调用何时完成?,javascript,axios,Javascript,Axios,我想将这段代码称为: this.setState({ // <------------ CODE 1 pages: pages }); 为了在设置状态之前等待每个操作完成,我们可以利用。但是,如果一个承诺被拒绝,则Promise.all将取消所有请求。这就是为什么我们要添加.catch(e=>e),它真正做的就是捕获任何拒绝并将其传递给Promise.all,就像Promise解析一样 结合wait我们可以等待Promise.all,然后循环结果,调用setState或任何您真正想要

我想将这段代码称为:

this.setState({ // <------------ CODE 1
  pages: pages
});

为了在设置状态之前等待每个操作完成,我们可以利用。但是,如果一个承诺被拒绝,则Promise.all将取消所有请求。这就是为什么我们要添加
.catch(e=>e)
,它真正做的就是捕获任何拒绝并将其传递给Promise.all,就像Promise解析一样

结合
wait
我们可以等待Promise.all,然后循环结果,调用
setState
或任何您真正想要的

let accessToken = response.accessToken;
axios
  .get(
    "https://graph.facebook.com/v5.0/me/accounts?fields=id,name&access_token=" +
      response.accessToken
  )
  .then(async pagesResponse => {
    console.log("test");
    let promisesArray = pagesResponse.data.data.map(async page => {
      console.log("page " + page.id + " " + page.name);
      this.setState({
        page: response.data.data
      });

      return axios
        .get(
          "https://graph.facebook.com/v5.0/" +
            page.id +
            "/events?access_token=" +
            accessToken
        )
        .catch(e => e);
    });

    const responses = await Promise.all(promisesArray);
    var pages = {}; // <------------ CODE 2
    responses.forEach((response, i) => {
      console.log("test 2");
      var events = {};
      let eventList = response.data.data.map(event => {
        console.log("event " + event.id + " " + event.name);
        events[event.id] = event.name;
      });
      const page = pagesResponse.data.data[i];
      pages[page.id] = [page.name, events];
    });

    this.setState({
      // <------------ CODE 1
      pages: pages
    });
  });

let accessToken=response.accessToken;
axios
.得到(
"https://graph.facebook.com/v5.0/me/accounts?fields=id,名称和访问权\u令牌=”+
response.accessToken
)
。然后(异步页面响应=>{
控制台日志(“测试”);
让promisesArray=pagesResponse.data.data.map(异步页面=>{
console.log(“page”+page.id+“”+page.name);
这是我的国家({
页面:response.data.data
});
返回轴
.得到(
"https://graph.facebook.com/v5.0/" +
page.id+
“/events?访问\u令牌=”+
accessToken
)
.渔获物(e=>e);
});
const responses=等待承诺。全部(promisesArray);
var pages={};//{
控制台日志(“测试2”);
var事件={};
让eventList=response.data.data.map(事件=>{
console.log(“事件”+event.id+“”+event.name);
events[event.id]=event.name;
});
const page=pagesResponse.data.data[i];
页面[page.id]=[page.name,事件];
});
这是我的国家({

//您是否希望等待所有这些问题,无论它们是拒绝还是已解决,还是希望它在第一次拒绝时设置状态?您好,无论它们是否已拒绝。请查看我添加的异步,它在第一个getMy问题的回调中丢失,
page.id
page.name
此处不可用:
page[page.id]=[page.name,events];
立即尝试。我使用响应循环索引来访问相关页面。请告诉我进展如何。
let accessToken = response.accessToken;
axios
  .get(
    "https://graph.facebook.com/v5.0/me/accounts?fields=id,name&access_token=" +
      response.accessToken
  )
  .then(async pagesResponse => {
    console.log("test");
    let promisesArray = pagesResponse.data.data.map(async page => {
      console.log("page " + page.id + " " + page.name);
      this.setState({
        page: response.data.data
      });

      return axios
        .get(
          "https://graph.facebook.com/v5.0/" +
            page.id +
            "/events?access_token=" +
            accessToken
        )
        .catch(e => e);
    });

    const responses = await Promise.all(promisesArray);
    var pages = {}; // <------------ CODE 2
    responses.forEach((response, i) => {
      console.log("test 2");
      var events = {};
      let eventList = response.data.data.map(event => {
        console.log("event " + event.id + " " + event.name);
        events[event.id] = event.name;
      });
      const page = pagesResponse.data.data[i];
      pages[page.id] = [page.name, events];
    });

    this.setState({
      // <------------ CODE 1
      pages: pages
    });
  });