如何在删除数组中的值后执行函数?
在我的代码中,我有类似的东西:
self.pictures.remove(this);
它正确删除我的项目,但我需要执行一个函数,它不接受回调...
这是我想做的,但不可能......:
self.pictures.remove(this, function() {
alert('Item removed');
});
答案 0 :(得分:4)
self.pictures.remove(this);
alert('Item removed');
从数组中删除元素通常不是异步的,不需要回调。这两行将一个接一个地顺序执行。
答案 1 :(得分:2)
这里不需要使用回调,因为remove()函数是一个同步操作。
当您处理异步操作时,需要回调,因为您不知道何时完成
self.pictures.remove(this);
alert('Item removed');
答案 2 :(得分:2)
Array.remove是同步的,这意味着在方法返回后,项目将被删除。
selv.pictures.remove(this);
alert('Item removed');
// do other stuff...
答案 3 :(得分:0)
您可以修改remove
Array
功能
像这样:
(function() {
Array.prototype.remove = function(index, callback) {
this.splice(index, 1);
if (callback){
callback();
}
return this;
};
})();
答案 4 :(得分:0)
JavaScript数组没有本机.remove()
方法。在Chrome控制台的空白页面上输入此内容(即不是您正在测试的页面):
[].remove()
打印:
TypeError: Object [object Array] has no method 'remove'
因此,无论您调用哪种.remove()
方法,它都是由您网页中的JavaScript代码定义的方法。
在不知道代码是什么的情况下,无法知道问题的答案。您的.remove()
方法是否同步?它是异步的吗?它有什么作用?您需要查看代码并查看。
一种简单的方法是在debugger;
电话会议之前立即发出.remove()
声明,并在Chrome开发者工具打开的情况下加载/修改您的页面。当它进入调试器时,您可以进入.remove()
方法并查看其实际功能。如果它进入已缩小且难以阅读的代码,请使用底部的{}
按钮来打印代码。
或者,如果此.remove()
方法来自库,请检查该库的文档。
就此而言,您的self.pictures
是实际的Array
还是其他一些提供自己的.remove()
方法的对象类型?
有可能你的.remove()
方法是一个普通的同步函数,但在你查看页面中的实际代码或该函数的文档之前,你不会知道。