XMLHttp連續呼叫SEND需要注意的問題

2022-04-17 19:21:19 字數 1047 閱讀 8784

我們在自己實現ajax的時候,在應用中常需要連續呼叫send函式,並寄希望send函式呼叫結束後可以自動正確呼叫其**函式,然而有時候不注意可能事與願違,產生此情況的原因在於ajax的實現上存在不正確用法。

如我們寫呼叫方法**如下:

var xmlhttp=new xmlhttprequest(); //此處沒有考慮不同瀏覽器相容問題

function send (....) { //

xmlhttp.open(post,url,true); //url為呼叫的網路服務頁面或服務

xmlhttp.onreadystatechange=callbackfunc; //callbackfunc是**函式

這樣如果連續兩次包括兩次以上連續呼叫send函式(**見下)將會發現只有最後一次呼叫的**函式被執行,而之前的**函式根本不會被呼叫

send(.....); //第一次呼叫;

send(.....); //第二次呼叫;這樣只有此處的**函式會被呼叫;

其實產生這個情況的主要原因在於,每個xmlhttp物件的一此send只能對應相應乙個onreadystatechange事件,這樣當第一次呼叫後,立即發出第二次呼叫,則onreadystatechange會反映第二次呼叫的狀況,因此如果有需求需要連續兩次或者兩次以上呼叫send函式,則必須每次使用不同的xmlhttp物件function send (....) { //

var xmlhttp=new xmlhttprequest(); //此處沒有考慮不同瀏覽器相容問題,

//此處xmlhttp與上面寫法不同是函式內部的區域性變數

xmlhttp.open(post,url,true); //url為呼叫的網路服務頁面或服務

xmlhttp.onreadystatechange=callbackfunc; //callbackfunc是**函式

VC中呼叫XMLHTTP物件訪問遠端資料的方法

visual c code 這裡是dll入口 import c windows system32 msxml.dll import c windows system32 msxml2.dll using namespace msxml2 hresult cominit include stdio.h...

iOS 呼叫相機連續拍照

跟朋友討論如題中的功能怎麼實現,後來用系統的方法實現了這一功能,說起來有點取巧,就是在確定拍照後的後重新進入相機介面,前面我發過一篇object c的和swift的上傳頭像,以這個為基礎實現,具體做法是在,選中一張後的 中 void imagepickercontroller uiimagepick...

呼叫send傳送網路資料報一定會立馬傳送出去嗎?

linux應用層呼叫了send傳送網路資料,那麼按照簡單的思維,這個動作會觸發網絡卡傳送資料,而現實並不是如此!首先對於send來說,分為阻塞傳送和非阻塞傳送 1 阻塞操作 核心會檢測傳送緩衝區是否存在足夠的空間存放使用者資料,如果空間足夠那麼直接拷貝資料到socket send buffer,後續...