如何在knockout.js中执行所有observableArray依赖项后执行函数

Gau*_*rav 6 javascript jquery knockout.js

我有一个可观察的阵营.我想在observableArray中删除或添加项目之后以及在完成所有依赖项订阅调用之后执行函数.喜欢 :

 observableArray.push(newObject);

 //I can't put my function call at this point because if any subscription is..
 //with newObject or observableArray will execute asynch, and i.. 
 //want my function to execute after all such subscription execution.  
Run Code Online (Sandbox Code Playgroud)

有没有办法在淘汰赛中实现这一目标?

Raf*_*ele 1

我认为事件是异步触发的,所以我编写了以下Live JSFiddle

var flagUpdater = ko.observable(0),
    aList = ko.observableArray(["Foo", "Bar", "Baz"]);

flagUpdater.subscribe(function() {
  console.log("Change the flag now!");
});

aList.subscribe(function() {
  console.log("Schedule flag update");
  flagUpdater("blah");
});

aList.push("Qoo");
Run Code Online (Sandbox Code Playgroud)

但它不起作用。看起来回调都是同步处理的,即一旦修饰函数(push()例如)返回,所有回调就已经返回。因此,您可以在操作数组后简单地设置标志(实时)

aList.push("Qoo");
flag = "CHANGED";
console.log("Flag is now " + flag);
Run Code Online (Sandbox Code Playgroud)