如何刪除我的數組中的值後執行函數?array.remove()後回調()
在我的代碼,我有這樣的事情:
self.pictures.remove(this);
它正確刪除我的項目,但我需要後執行的函數,它不接受回調...
這是我倒是喜歡做,但不可能...:
self.pictures.remove(this, function() {
alert('Item removed');
});
如何刪除我的數組中的值後執行函數?array.remove()後回調()
在我的代碼,我有這樣的事情:
self.pictures.remove(this);
它正確刪除我的項目,但我需要後執行的函數,它不接受回調...
這是我倒是喜歡做,但不可能...:
self.pictures.remove(this, function() {
alert('Item removed');
});
self.pictures.remove(this);
alert('Item removed');
從數組中刪除元素通常不異步,不需要回調。這兩行將依次執行。
由於remove()函數是一個同步操作,因此不需要使用回調函數。
需要進行回調出現,當你處理異步操作,因爲你不知道它什麼時候會完成
self.pictures.remove(this);
alert('Item removed');
你怎麼知道remove()是同步的? – dandavis
您可以修改Array
像這樣remove
功能:
(function() {
Array.prototype.remove = function(index, callback) {
this.splice(index, 1);
if (callback){
callback();
}
return this;
};
})();
JavaScript數組沒有本地.remove()
方法。在Chrome控制檯鍵入此一空白頁上(即不是你正在測試的頁面):
[].remove()
它打印:
TypeError: Object [object Array] has no method 'remove'
因此,無論.remove()
方法你打電話,這是一個這是由頁面中的JavaScript代碼定義的。
不知道代碼是什麼,沒有辦法知道你的問題的答案。你的.remove()
方法是同步的嗎?它是異步的嗎?它有什麼作用?您需要查看代碼並查看。
一個簡單的方法是在打開Chrome開發人員工具調用並加載/鍛鍊您的頁面之前立即添加debugger;
聲明。當它進入調試器時,您可以進入.remove()
方法並查看它的實際功能。如果它進入已被縮小且難以閱讀的代碼,請使用底部的{}
按鈕來打印代碼。
或者,如果此.remove()
方法來自庫,請檢查該庫的文檔。
對於這個問題,你的self.pictures
是一個實際的Array
還是它提供自己的.remove()
方法的一些其他對象類型?
機會是你的.remove()
方法是一個普通的同步函數,但直到你看到頁面中的實際代碼或該函數的文檔時纔會知道。
調用'.remove()'時,執行將不會繼續 直到完成刪除。不需要回撥。 – Nope
你能提供同樣的jsfilldle嗎? – Manish
@FrançoisWahl:你怎麼知道remove()是同步的? – dandavis