-1
如何通過JQuery的setTimeout
調用帶參數的函數?如何用setTimeout回調參數調用函數?
這個「作品」,但功能是直接調用:
var successFunc = function(data, textStatus_ignored, jqXHR_ignored) {
alert("sf data='" + data + "', textStatus_ignored='" + textStatus_ignored + "', jqXHR_ignored='" + jqXHR_ignored + "', color_id='" + color_id + "'");
$('#toggle_color_like_cell_' + color_id).html(data);
};
var successFuncWithTimeout = function(data, textStatus_ignored, jqXHR_ignored) {
//alert("sfwt data='" + data + "', textStatus_ignored='" + textStatus_ignored + "', jqXHR_ignored='" + jqXHR_ignored + "', color_id='" + color_id + "'");
setTimeout(successFunc(data, textStatus_ignored, jqXHR_ignored), 2000);
}
此等待兩秒鐘,但根據警報,所有的參數都undefined
:
var successFuncWithTimeout = function(data, textStatus_ignored, jqXHR_ignored) {
//alert("sfwt data='" + data + "', textStatus_ignored='" + textStatus_ignored + "', jqXHR_ignored='" + jqXHR_ignored + "', color_id='" + color_id + "'");
setTimeout(function(data, textStatus_ignored, jqXHR_ignored) {
alert("sf data='" + data + "', textStatus_ignored='" + textStatus_ignored + "', jqXHR_ignored='" + jqXHR_ignored + "', color_id='" + color_id + "'");
$('#toggle_color_like_cell_' + color_id).html(data);
}, 2000);
}
或者,你可以使用'.bind()'的參數附加到一個回調。 – jfriend00 2014-09-19 15:54:24
供參考。 'setTimeout'中的'return'具有誤導性,因爲它什麼都不做。這沒有錯,因爲它做錯了什麼。確實它是無害的。但是未來的開發人員會想知道爲什麼那個「return」會在那裏,並想知道是否有他們不知道的javascript特性。誤導性的代碼導致錯誤的假設導致錯誤。 – slebetman 2014-09-19 16:48:45
@slebetman:固定。它只是返回'undefined',所以它應該被調用。 – aliteralmind 2014-09-19 17:06:55