角度5,如何从承诺返回数组?

时间:2018-04-06 23:38:02

标签: arrays angular promise

我正在创建一个数组,在创建数组之后,该数组被解析为Object。 但是,由于我需要在解析后根据特定值对tempArray进行排序,我需要将其作为数组,而不是Object。 也是因为我在使用以下方式显示它之后:* 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"}

1 个答案:

答案 0 :(得分:3)

您可以将其作为数组返回,不需要对象:

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

这是一个stackblitz,它使用*ngFor中的promise数组返回值:https://stackblitz.com/edit/angular-vpkk1a

相关问题