Angular 2 api调用promise数组无法解析

时间:2017-03-22 12:25:40

标签: angular promise facebook-javascript-sdk angular-promise

我正在使用带有TypeScript的Angular 2并尝试使用Facebook SDK包装器。

我需要循环解决Facebook数据。不知怎的,我的诺言阵列没有解决。但是当我从api调用记录响应时,一切似乎都很好。 所以我对Promise处理做错了。

承诺功能:

getOrgData(): Promise<any> { // I ONLY NEED TO STORE THE ORGANISATION IDS, DONT NEED FB API FOR THAT ... ??? I DO NEED THE CATEGORIES, PLACE_TOPICS, EMAILS, ...
  let promiseArray: Array<any> = []
  for (var o in this.per50) {
    promiseArray.push(new Promise((resolve,reject) => 
      this._facebookService.api('/?ids=' + this.per50[o] + '&fields=id,name,category,category_list,place_topics,place_type,emails,phone,location&access_token='+ this.access_token)
      .then(
        (resp) => {
          console.log(resp);
          resolve(true)
        },
        (error) => this.errorMessage = error
      )
    ));
  }

  return Promise.all(promiseArray);
}

我这样称呼它:

this.getOrgData().then(
  resp => console.log(resp),
  error => console.log(error),
)

for循环的原因是Facebook api调用一次只能处理50个项目,因此我必须创建一个包含最多50个项目的对象。

所以foreach数组50我正在进行Facebook通话。一切正常......只是Promise数组似乎没有得到解决。有人有想法吗?

我对Promises并不是很有经验,我更喜欢Observables,但这个Facebook SDK Wrapper可以与Promises一起使用......

---------------------------解决---------------- ------------

显然这些承诺工作正常,但我没有抓到Facebook Api电话的错误,所以我从未进入Facebook电话的then()所以没有解决问题,我的不好。

1 个答案:

答案 0 :(得分:0)

let循环

中使用var代替for
for (let o in this.per50) {
    promiseArray.push(new Promise((resolve,reject) => 
      this._facebookService.api('/?ids=' + this.per50[o] + '&fields=id,name,category,category_list,place_topics,place_type,emails,phone,location&access_token='+ this.access_token)
      .then(
        (resp) => {
          console.log(resp);
          resolve(true)
        },
        (error) => this.errorMessage = error
      )
    ));
  }