猿问

jQuery延迟和承诺-.Then()vs.Done()

jQuery延迟和承诺-.Then()vs.Done()

我一直在阅读关于jQuery延迟和承诺的文章,我看不出使用.then() & .done()为了成功的回调。我知道呀艾瑞克·海因兹提到.done().success()映射到相同的功能,但我猜也是如此.then()因为所有回调都是在一个成功的操作完成后调用的。

有人能告诉我正确的用法吗?


开心每一天1111
浏览 655回答 3
3回答

一只名叫tom的猫

处理返回结果的方式也有差异(称为链接,done不锁链then生产呼叫链)promise.then(function (x) { // Suppose promise returns "abc"     console.log(x);     return 123;}).then(function (x){     console.log(x);}).then(function (x){     console.log(x)})将记录下列结果:abc123undefined当promise.done(function (x) { // Suppose promise returns "abc"     console.log(x);     return 123;}).done(function (x){     console.log(x);}).done(function (x){     console.log(x)})将得到以下信息:abc abc abc-更新:顺便说一下。我忘了提到,如果您返回一个承诺而不是原子类型的值,外部承诺将等待内部承诺解决:promise.then(function (x) { // Suppose promise returns "abc"     console.log(x);     return $http.get('/some/data').then(function (result) {         console.log(result); // suppose result === "xyz"         return result;     });}).then(function (result){     console.log(result); // result === xyz}).then(function (und){     console.log(und) // und === undefined, because of absence of return statement in above then})通过这种方式,组成并行或顺序异步操作变得非常简单,例如:// Parallel http requestspromise.then(function (x) { // Suppose promise returns "abc"     console.log(x);     var promise1 = $http.get('/some/data?value=xyz').then(function (result) {         console.log(result); // suppose result === "xyz"         return result;     });     var promise2 = $http.get('/some/data?value=uvm').then(function (result) {         console.log(result); // suppose result === "uvm"         return result;     });     return promise1.then(function (result1) {         return promise2.then(function (result2) {            return { result1: result1, result2: result2; }         });     });}).then(function (result){     console.log(result); // result === { result1: 'xyz', result2: 'uvm' }}).then(function (und){     console.log(und) // und === undefined, because of absence of return statement in above then})上面的代码并行地发出两个http请求,从而使请求更快地完成,而下面的http请求是按顺序运行的,从而减少了服务器负载。// Sequential http requestspromise.then(function (x) { // Suppose promise returns "abc"     console.log(x);     return $http.get('/some/data?value=xyz').then(function (result1) {         console.log(result1); // suppose result1 === "xyz"         return $http.get('/some/data?value=uvm').then(function (result2) {             console.log(result2); // suppose result2 === "uvm"             return { result1: result1, result2: result2; };         });     });}).then(function (result){     console.log(result); // result === { result1: 'xyz', result2: 'uvm' }}).then(function (und){     console.log(und) // und === undefined, because of absence of return statement in above then})

幕布斯7119047

.done()只有一个回调,这就是成功的回调。.then()有成功的也有失败的回调.fail()只有一个失败回调所以你该怎么做.你在乎它是成功还是失败?
随时随地看视频慕课网APP

相关分类

JQuery
我要回答