【问题标题】:angular 5, how do I return an array from a promise?角度 5,我如何从承诺中返回一个数组?
【发布时间】:2018-04-08 07:58:46
【问题描述】:

我正在创建一个数组,创建后该数组被解析为一个对象。 但是,由于我需要在解析后根据特定值对 tempArray 进行排序,因此我需要将它作为一个数组,而不是一个对象。 也因为在排序之后我使用:*ngFor 来显示它。 还是以某种方式对 Object 进行排序而不是将其更改回数组更好?

返回的 Promise 的 console.log 显示在下方。

var tempArray = []
return new Promise((resolve, reject) => {
  let error = false;
  var i = 0;
  for (let key of arrayOfPosts) {
    tempArray[i] = {
      "_id": key._id,
      "postPub": key.postPub,
      "timePast": this.timePastPublix
    }
    i++
  }

  if (error) {
    reject('error')
  } else {
    resolve(tempArray)
  }
});
{_id: "5aba1af4c97ce42ea81893bc", postPub: "0.00", timePast: "1970-01-01T01:00:00+01:00"}
{_id: "5ac698172910d705ecd66378", postPendingPayoutPublic: "0.00", timePast: "1970-01-01T01:00:00+01:00"}

【问题讨论】:

    标签: arrays angular promise


    【解决方案1】:

    你可以将它作为一个数组返回,不需要一个对象:

    var promise = new Promise((resolve, reject) => {
      resolve([1,2,3,4,5]);
    });
    
    // reject example
    var promise2 = new Promise((resolve, reject) => {
      var array = [];
      if(array.length == 0)
         reject("error");
      else
         resolve(array);
    });
    
    promise.then(data => console.log(data));
    promise2.then(data => console.log(data))
            .catch(error => console.log(error));

    这是一个堆栈闪电战,它使用*ngFor 中的承诺数组返回值:https://stackblitz.com/edit/angular-vpkk1a

    【讨论】:

    • 它是 Promise.resolve(array)。不需要 promise 构造函数。
    • @estus 你是对的,我的例子可能就是这样,但是在问题中,他们似乎希望在承诺中进行某种错误检查。
    • 我们什么时候检查拒绝,你能举个例子吗?您的解决方案有效。
    • @oudekaas 添加了一个产生错误的示例。
    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 2018-08-16
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多