欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

關(guān)于.whenjquery的信息

jQUery的$.when().done()是依序執(zhí)行,得到的是同步執(zhí)行的效果,為什么叫異步編程?

因?yàn)樗膬?nèi)部實(shí)現(xiàn)是ajax,本來就是異步的,所以是異步編程。

成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),微信小程序開發(fā),十年建站對(duì)加固等多個(gè)方面,擁有豐富的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)。

jQuery.when(deferreds)

參數(shù)deferreds,一個(gè)或多個(gè)延時(shí)對(duì)象或JS對(duì)象,我們初略的認(rèn)為它就是一個(gè)或多個(gè)異步請(qǐng)求。

1、異步編程

.NET 與C# 的每個(gè)版本發(fā)布都是有一個(gè)"主題"。即:C#1.0托管代碼→C#2.0泛型→C#3.0LINQ→C#4.0動(dòng)態(tài)語言→C#5.0異步編程。

2、線程概述

從此圖中我們會(huì)發(fā)現(xiàn) .NET 與C# 的每個(gè)版本發(fā)布都是有一個(gè)"主題"。即:C#1.0托管代碼→C#2.0泛型→C#3.0LINQ→C#4.0動(dòng)態(tài)語言→C#5.0異步編程。

jquery when then方法

jQuery.when(deferreds)

參數(shù)deferreds,一個(gè)或多個(gè)延時(shí)對(duì)象或JS對(duì)象,我們初略的認(rèn)為它就是一個(gè)或多個(gè)異步請(qǐng)求。

例如:$.when($.ajax("page1.php"),?$.ajax("page2.php"))

when()函數(shù)常常和done()函數(shù)、fail()函數(shù)、then()函數(shù)聯(lián)合使用:

done(Function func)?- 當(dāng)deferreds中的處理都完成的時(shí)候執(zhí)行Function回調(diào)函數(shù)

fail(Function func)?- 當(dāng)deferreds中有一個(gè)處理失敗的時(shí)候執(zhí)行Function回調(diào)函數(shù)

then(Function func1,Function func2)- 結(jié)合了done和fail函數(shù),當(dāng)都成功執(zhí)行func1,當(dāng)有一個(gè)失敗執(zhí)行func2

var?whenResult?=?$.when($.ajax("page1.php"),?$.ajax("page2.php"));

whenResult.done(function(a1,a2){

//函數(shù)內(nèi)容略

//a1和a2倆參數(shù)是when函數(shù)中兩個(gè)ajax請(qǐng)求的相關(guān)jqXHR對(duì)象

});

whenResult.fail(function(){

//函數(shù)內(nèi)容略

})

whenResult.then(successFunc,failureFunc);

如果沒有參數(shù)傳遞給?jQuery.when(),它會(huì)返回一個(gè)resolved狀態(tài)的Promise。

如果向?jQuery.when()?傳入一個(gè)單獨(dú)的延遲對(duì)象,那么會(huì)返回它的 Promise 對(duì)象(延遲方法的一個(gè)子集)。可以繼續(xù)綁定 Promise 對(duì)象的其它方法,例如,?defered.then?。當(dāng)延遲對(duì)象已經(jīng)被解決(resolved)或被拒絕(rejected)(通常是由創(chuàng)建延遲對(duì)象的最初代碼執(zhí)行的),那么就會(huì)調(diào)用適當(dāng)?shù)幕卣{(diào)函數(shù)。例如,由?jQuery.ajax()?返回的 jqXHR 對(duì)象是一并立的延遲對(duì)象并且可以像下面這樣使用:

$.when( $.ajax("test.aspx") ).then(function(data, textStatus, jqXHR){

alert( jqXHR.status ); // alerts 200

});

在多延遲情況下,如果Deferreds延遲對(duì)象一被拒絕(rejected),jQuery.when()觸發(fā)立即調(diào)用 “宿主” Deferred(延遲)對(duì)象的 failCallbacks。請(qǐng)注意在這個(gè)時(shí)間點(diǎn)上,有一些延遲對(duì)象仍然可以是未解決(unresolved)的。 傳遞給failCallbacks的參數(shù)匹配Deferred(延遲)對(duì)象的 failCallbacks被 rejected 拒絕的順序。那么,在這種情況下,如果需要執(zhí)行一些額外的處理,例如,取消所有未完成的 ajax 請(qǐng)求,你可以在閉包中進(jìn)行保持 jqXHR 對(duì)象的引用,并且在 failCallback 中檢查或取消它們。

例子:

Example:?執(zhí)行Ajax請(qǐng)求后兩個(gè)函數(shù)是成功的。

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, ?a2){

/* a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively */

var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */

if ( /Whip It/.test(jqXHR.responseText) ) {

alert("First page has 'Whip It' somewhere.");

}

});

Example:?執(zhí)行函數(shù)myFunc當(dāng)兩個(gè)Ajax請(qǐng)求是成功的,如果任一或myFailure有一個(gè)錯(cuò)誤。

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))

.then(myFunc, myFailure);

使用jQuery中的when實(shí)現(xiàn)多個(gè)AJAX請(qǐng)求對(duì)應(yīng)單個(gè)回調(diào)的例子分享

我在為 Mozilla Developer Network(Mozilla開發(fā)者社區(qū)) 寫代碼時(shí)需要加載的一個(gè)普通的的腳本文件,以及一個(gè)JSON流。 因?yàn)槲覀兪褂胘Query,這意味著需要調(diào)用 jQuery.getScript 和 jQuery.getJSON 函數(shù)。

我知道這些函數(shù)都是異步執(zhí)行(asyncronously)并且會(huì)延遲一段時(shí)間返回,所以我想知道是否有一種方式,使我可以使用單個(gè)回調(diào),并行地加載它們,就像JS加載器 curljs 所做的那樣。 很幸運(yùn)! 通過jQuery.when, 我可以并發(fā)地加載兩個(gè)請(qǐng)求,只執(zhí)行一次回調(diào)!

jQuery 腳本

正如我提到的,下面是加載腳本和一個(gè)JSON資源的用例:

代碼如下:

$.when(

$.getScript('/media/js/wiki-min.js?build=21eb633'),

$.getJSON

).then(function(a, b) { // 或者也可以使用 ".done"

// Yay, 加載完成,此處我們可以執(zhí)行一些依賴操作。。。

});

當(dāng)資源加載完成, 指定的 done 或者 then 回調(diào)會(huì)觸發(fā),因此可以知道請(qǐng)求已經(jīng)完成。 每個(gè)請(qǐng)求返回的回調(diào)參數(shù)對(duì)象類型不同,因此上述請(qǐng)求可能返回如下信息:

代碼如下:

// 格式: [response, state, jqxhr], [response, state, jqxhr]

["(function(c){var e=c(".from-search-navigate");if(e…;if(j){g.apply(m,l)}}}})(window,document,jQuery);", "success", Object]

[Array[15], "success", Object]

如果還需要增加一個(gè)傳統(tǒng)的AJAX XHR請(qǐng)求,比如說一個(gè)小部件模板,我們可以這樣做:

代碼如下:

$.when(

$.getScript('/media/js/wiki-min.js?build=21eb633'),

$.getJSON

$.get('/')

).then(function(a, b, c) {

console.log(a, b, c);

});

Dojo Toolkit很早就有此類功能了,但jQuery也可以這么做我還是相當(dāng)振奮的。 對(duì)于現(xiàn)在的開發(fā),多個(gè)不同步且返回先后順序也不確定的請(qǐng)求共享同一個(gè)回調(diào)是很自然的需求,所以jQuery絕對(duì)是與時(shí)俱進(jìn)的!

本文題目:關(guān)于.whenjquery的信息
標(biāo)題來源:http://chinadenli.net/article14/dsijgge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)小程序開發(fā)云服務(wù)器網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化