某次寫乙個庫給前端呼叫,前端在傳入乙個分配的記憶體塊給庫裡面有資料,然後庫通過訊息佇列的方式將資料儲存起來,發給服務端,但服務端收到的資料出現概率性亂碼。
服務端列印收到的資料異常,客戶端列印資料發現,發出去的資料是空。
最後找到前端傳入的記憶體塊,進入庫的訊息佇列之後,前端函式返回,前端對應記憶體塊釋放,訊息佇列儲存的資料為空了,這是非同步呼叫的情況,這時需要在庫對應的記憶體空間分配記憶體儲存資料。
同步呼叫則不會出現這種情況,因為前端呼叫乙個同步呼叫,是等這個呼叫返回之後,前端函式才返回,所有前端對應的那塊記憶體還沒有釋放,但是非同步呼叫時,庫訊息佇列的資料還沒有發生出去,前端函式返回,記憶體塊釋放,這樣發生出去的資料為空。
同步呼叫與非同步呼叫
一 什麼是同步呼叫與非同步呼叫 定義 1 同步就是整個處理過程順序執行,當各個過程都執行完畢,並返回結果。2 非同步呼叫則是只是傳送了呼叫的指令,呼叫者無需等待被呼叫的方法完全執行完畢 而是繼續執行下面的流程。例如,在某個呼叫中,需要順序呼叫 a,b,c三個過程方法 如他們都是同步呼叫,則需要將他們...
JQ 非同步呼叫
請求 test.php 網頁,忽略返回值。jquery 程式 get test.php 請求 test.php 網頁,傳送2個引數,忽略返回值。jquery 程式 get test.php 顯示 test.php 返回值 html 或 xml,取決於返回值 jquery 程式 get test.ph...
html 非同步呼叫
我們的例項在 open 的第三個引數中使用了 true 該引數規定請求是否非同步處理。true 表示指令碼會在 send 方法之後繼續執行,而不等待來自伺服器的響應。onreadystatechange 事件使 複雜化了。但是這是在沒有得到伺服器響應的情況下,防止 停止的最安全的方法。通過把該引數設...