2012-06-16 53 views
0

我在寫一個js庫,它使用服務器(BE)的服務。我正在使用Jquery - AJAX來使用這些服務。然而,消費這臺服務器,我需要爲成功/錯誤設置回調如何在js中創建同步力?

function CallAjax(callback){ 

$.ajax({ 
    url: 'http://server.com/service1.svc', 
    success: function(data) { 
     callback(data); 
     } 
}); 

} 

所以,我需要等待回調返回正確的值,但功能已返回主界面。

myLib = (function() { 

    do = function() 
    { 
     var callback = function() { return true }; 

      CallAjax(callback); 
    } 


}()) 

主頁:但我想消費我的lib同步,但從通話的性質我不吝嗇的方式來做到這一點。

I would like something like 
    if (mylib.do() == true) 
    { } 

任何幫助?

回答

1

您可以將async開關設置爲false。這將導致對服務器的同步呼叫。注意這樣做的後果:客戶端瀏覽器將在執行請求期間凍結。如果你不希望發生這種情況,你將不得不重新設計你的庫,以便它與回調協同工作,恕我直言是使用AJAX的正確方式。因此,爲您的圖書館的消費者提供回調。

+1

而@Agus,如果你可以避免它,你真的不想同步AJAX設置(你可以:-) – Pointy

+0

完全同意Pointy。我已經提到'async:false'開關只是一種替代選擇,而不是應該使用的東西。 –

+0

好吧,我明白了,所以使用回調工作就是這樣嗎?這是一個很好的做法? – Agus