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

How to execute function after all observableArray dependencies executed in knockout.js

本文关键字:执行 observableArray 依赖 函数 knockout js      更新时间:2023-09-26

我有一个observableArray。我想在从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.  

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

我不确定observableArray.push()是否会返回true,但请尝试一下;

if (observableArray.push(newObject)) {
    console.log(observableArray);
}

我认为事件是异步触发的,所以我编写了下面的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");

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

aList.push("Qoo");
flag = "CHANGED";
console.log("Flag is now " + flag);