【问题标题】:Angular 2 api call promise array not resolvingAngular 2 api调用承诺数组无法解析
【发布时间】:2017-08-14 13:33:44
【问题描述】:

我正在使用带有 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 array of 50 我正在拨打 Facebook 电话。一切正常……只是 Promise 数组似乎没有得到解决。有人有想法吗?

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

--------------已解决---- ------------

显然,promise 运行良好,但我没有发现 Facebook Api 调用的错误,所以我从未参与 Facebook 调用的 then(),所以没有解决问题,我的错。

【问题讨论】:

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


    【解决方案1】:

    在你的for循环中使用let而不是var

    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
          )
        ));
      }
    

    【讨论】:

    • 哦,是的,错字......它没有解决任何问题,但感谢您指出这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多