Если ваш код структурирован так:
function callback() {
// (or similar, maybe with `setTimeout`)
$.jsonp({
url: serviceUrl + "/AddPick?callback=?&" + jQuery.param(json),
success: function (returned, textStatus) {
callback({ "d": returned.d, "pickCount": pickCount });
}
});
}
Затем создается новая функция success
рекурсивно .Стек вызовов может выглядеть следующим образом:
> callback
> $.jsonp
> NEW success
> callback
> $.jsonp
> NEW success
> ...
Растущий стек, новые функции success
, создаваемые на каждой итерации, и весь контекст самих функций success
(включая returned
, textStatus
и контекст callback
) в конечном итоге приводят к объектам, которые среда выполнения должна отслеживать, но которые в основном не используются.
Альтернативой является использование вспомогательной функции вне области действия callback
:
function callCallback(returned, textStatus) {
callback({ "d": returned.d, "pickCount": pickCount });
}
function callback() {
// (or similar, maybe with `setTimeout`)
$.jsonp({
url: serviceUrl + "/AddPick?callback=?&" + jQuery.param(json),
success: callCallback
});
}
При необходимости сделайте функцию частной.Например:
var callback = (function () {
function callCallback(returned, textStatus) {
callback({ "d": returned.d, "pickCount": pickCount });
}
function callback() {
// (or similar, maybe with `setTimeout`)
$.jsonp({
url: serviceUrl + "/AddPick?callback=?&" + jQuery.param(json),
success: callCallback
});
}
return callback;
})();