对象

时间:2016-12-05 10:13:35

标签: node.js bluebird

我有像这样的对象;

{ '6': { stream: { twitch: [Object] } },
  '7': { stream: { twitch: [Object] } },
  '8': { stream: { twitch: [Object] } },
  '9': { stream: { twitch: [Object] } },
  '10': { stream: { twitch: [Object] } },
  '11': { stream: { twitch: [Object] } } }

我想像迭代一样迭代它;

return Promise.map(myObj, function(minute, minuteIndex) {

所以基本上应该保持数据分钟,而minuteIndex应该保持索引。

我可以用lodash做到,但蓝鸟不知何故。

_.forEach(hour.minutes, function(minute, minuteIndex) {

我知道此代码之前正在运行,但现在无法实现。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您可以将对象的键映射到数组中并将其提供给 $scope.dtColumns = dtColumns; //create options $scope.dtOptions = DTOptionsBuilder.newOptions() .withOption('data', data) .withOption('dataSrc', ''); //initialize the dataTable angular.element('#dtData').attr('datatable', ''); $compile(angular.element('#dtData'))($scope);

Promise.map()

用法:

function process(stats) {
    var statsArray = Object.keys(stats).map(key => ({
        minute: key, minuteIndex: stats[key]
    }));
    return Promise.map(statsArray, item => {
        // work with item.minute & item.minuteIndex
    });
}

答案 1 :(得分:1)

export class ContainerComponent implements OnInit, AfterViewInit {
  @Input() formData: Object;
  @ViewChild('form') form: NgForm;
  constructor() { }

  ngOnInit(): void {
  }

  ngAfterViewInit(): void {
     this.form.form.valueChanges.subscribe((value) => {
       //Gets called multiple times on page load
     });
  }

}

结合使用Promise.All( Object.keys(twitchStats).map(key => Promise.resolve({ minute: key, minuteIndex: twitchStats[key] }) ) Promise.All()函数。请注意,Map()必须兑现承诺,以便Map()正常工作。

答案 2 :(得分:0)

您也可以使用_.toPairs将对象转换为数组,然后您就可以使用Promise.map方法。

答案 3 :(得分:0)

您没有在问题中指定是否使用Promise.map()回调函数返回诺言或值。如果只想返回一个值,则使用Promise.map()而不是forEach并没有太大的好处。

Bluebird的Promise.map()用于最基本的界面是根据文档:

  

替换.push + Promise.all样板

假设您要返回承诺,则可以使用lodash.map()遍历对象,并在创建 承诺时使密钥可用,然后使用Promise.all()执行它们

  let jobs =
    _.map(myObj, (minute, minuteIndex) => {
      return fnThatReturnsPromise(minute, minuteIndex);
    });

  return Promise.all(jobs);

或者作为一个更类似于您所需格式的语句

  return Promise.all(_.map(myObj, (minute, minuteIndex) => {
    return fnThatReturnsPromise(minute, minuteIndex);
  }));