等到函数在递归函数中完成

时间:2016-02-03 12:51:24

标签: javascript recursion blocking

鉴于我有一个递归方法:

tests = {
  add: function (data, option, dataSet) {
    if(option) {
      dataSet.forEach(function (values) {
        this.add(values.data, false);
      }, this);
    }
    console.log(data.name)
  }
}

我会用

来称呼它
tests.add({name: 'test1'}, true, [{data: {name: 'test2'}}]);

我认为这会记录' test2'之前' test1'在所有情况下,但在很多情况下,这不会发生。到目前为止,我知道forEach函数应该阻止其他行的执行,但这根本不会发生。

一点背景: 代码应该在网页上添加某些组件。这些组件可以依赖于其他组件(在dataSet中)。应始终首先递归地添加这些依赖项。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这种不一致的原因是console.log不是同步函数。 Read more here