如何在knockout.js中执行完所有observableArray依赖后执行函数
How to execute function after all observableArray dependencies executed in knockout.js
我有一个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);
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval