array.remove()之后的回调

时间:2013-07-09 07:24:41

标签: javascript jquery arrays callback

如何在删除数组中的值后执行函数?

在我的代码中,我有类似的东西:

self.pictures.remove(this);

它正确删除我的项目,但我需要执行一个函数,它不接受回调...

这是我想做的,但不可能......:

self.pictures.remove(this, function() {
    alert('Item removed');
});

5 个答案:

答案 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;
};
})();

示例: http://jsfiddle.net/8UUaD/

答案 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()方法是一个普通的同步函数,但在你查看页面中的实际代码或该函数的文档之前,你不会知道。