6

我有一个 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.  

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

4

2 回答 2

1

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

if (observableArray.push(newObject)) {
    console.log(observableArray);
}
于 2013-03-08T14:00:20.633 回答
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");

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

aList.push("Qoo");
flag = "CHANGED";
console.log("Flag is now " + flag);
于 2013-03-08T12:50:13.693 回答