删除数组中的值后如何执行函数?
在我的代码中,我有这样的东西:
self.pictures.remove(this);
它正确删除了我的项目,但我需要在之后执行一个函数并且它不接受回调......
这是我想做的,但不可能......:
self.pictures.remove(this, function() {
alert('Item removed');
});
删除数组中的值后如何执行函数?
在我的代码中,我有这样的东西:
self.pictures.remove(this);
它正确删除了我的项目,但我需要在之后执行一个函数并且它不接受回调......
这是我想做的,但不可能......:
self.pictures.remove(this, function() {
alert('Item removed');
});
self.pictures.remove(this);
alert('Item removed');
从数组中删除元素通常不是异步的,不需要回调。2行将依次执行,一个接一个。
这里不需要使用回调,因为 remove() 函数是一个同步操作。
处理异步操作时需要回调,因为您不知道何时完成
self.pictures.remove(this);
alert('Item removed');
Array.remove 是同步的,这意味着在方法返回后项目被移除。
selv.pictures.remove(this);
alert('Item removed');
// do other stuff...
您可以修改remove
的功能Array
像这样:
(function() {
Array.prototype.remove = function(index, callback) {
this.splice(index, 1);
if (callback){
callback();
}
return this;
};
})();
示例:http: //jsfiddle.net/8UUaD/
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()
方法是一个普通的同步函数,但直到您查看页面中的实际代码或该函数的文档后您才会知道。