gpt4 book ai didi

javascript - 为什么回调比 promise 更多 "tightly coupled"?

转载 作者:IT王子 更新时间:2023-10-29 03:13:04 27 4
gpt4 key购买 nike

你能给我解释一下下面的短语(摘自 an answer to Stack Overflow question What are the differences between Deferred, Promise and Future in Javascript? )吗?

使用 jQuery 的优点是什么? promise 不使用以前的 jQuery 回调?

Rather than directly passing callbacks to functions, something which can lead to tightly coupled interfaces, using promises allows one to separate concerns for code that is synchronous or asynchronous.

最佳答案

A promise is an object that represents the result of an asynchronous operation ,因此您可以传递它,这为您提供了更大的灵 active 。

如果您使用回调,则在调用异步操作时,您必须指定如何处理它,因此需要耦合。通过 promise ,您可以指定稍后将如何处理它。

这是一个示例,假设您想通过 ajax 加载一些数据,并且在这样做时您想要显示一个加载页面。

有回调:

void loadData = function(){
showLoadingScreen();
$.ajax("http://someurl.com", {
complete: function(data){
hideLoadingScreen();
//do something with the data
}
});
};

处理返回数据的回调必须调用 hideLoadingScreen。

使用 promises,您可以重写上面的代码片段,使其更具可读性,并且您不必将 hideLoadingScreen 放在 complete 回调中。

promise

var getData = function(){
showLoadingScreen();
return $.ajax("http://someurl.com").promise().always(hideLoadingScreen);
};

var loadData = function(){
var gettingData = getData();
gettingData.done(doSomethingWithTheData);
}

var doSomethingWithTheData = function(data){
//do something with data
};

更新:我写了一个 blog post它提供了额外的示例,并清楚地描述了什么是 promise 以及如何将其使用与使用回调进行比较。

关于javascript - 为什么回调比 promise 更多 "tightly coupled"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141817/

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