gpt4 book ai didi

javascript - 将简单的 ajax 调用转换为使用 promise jQuery/AngularJS

转载 作者:行者123 更新时间:2023-11-30 17:24:52 24 4
gpt4 key购买 nike

我有这种在应用程序中使用 AJAX 调用的通用方法:

function doAjaxCommand(url, type, async, params, successCallback, failCallback) {
$.ajax({
url: url,
type: type,
async: async,
dataType: "json",
data: JSON.stringify(params)
contentType: "application/json; charset=utf-8",
success: function(result) {
if (result.Success) {
successCallback(result);
} else {
if (failCallback !== undefined) {
failCallback(result);
}
return false;
}
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
console.log(xhr);
console.log(status);
}
});
}

我听说使用 promises 我可以更好地利用异步操作。但是,我不知道如何使用 promise 。我从来没有使用过它,而且在我阅读的一些链接中我也没有完全理解。你们能告诉我一下吗?甚至如何开始思考?

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

实际上,promises 提供了一种更好的方式来“组合”回调。定期回调通常会导致“厄运金字塔”。

    step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// Do something with value4
});
});
});
});

相反, promise 允许扁平化的调用流程。例如:使用 q.js( https://github.com/kriskowal/q ) 我们可以做到

Q.fcall(promisedStep1)
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
// Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps
})
.done();

jquery也支持promise风格

var jqxhr = $.getJSON( "example.json", function() {
console.log( "success" );
})
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});

但是你应该使用内置的 Angular promise 。

关于javascript - 将简单的 ajax 调用转换为使用 promise jQuery/AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24482233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com