2013-04-04 47 views
0

我打算調用一個可以調用同步REST API的函數。如果它在一段時間內沒有返回,我想以某種方式在該函數調用上超時。我怎麼做?Javascript:爲同步REST API調用添加超時

callBlahService = function(args){ 
    // make actual rest api call 
    $.ajax{ 
     // arguments 
     async: false 
    } 
} 

callBlahService({ 
    success:function(data){ 
     console.log("blah successful"); 
    }, 
    error: function(data){ 
     console.log("blah failed"); 
    } 
}); 

回答

1

看起來像你使用的是JQuery。在$.ajax上有一個timeout設置應該使用:http://api.jquery.com/jQuery.ajax/

如果超時超時,您的錯誤處理程序將被調用。

$.ajax({ 
    timeout: 1000, 
    success: function(response) {}, 
    error: function(x, t, m) { 
     if(t==="timeout") { 
      alert("timed out!"); 
     } 
    } 
});​ 
0

超時

類型:Number

設置請求超時(以毫秒爲單位)。這將覆蓋使用$.ajaxSetup()設置的全局超時。超時時間從$ .ajax調用開始;如果有多個其他請求正在進行,並且瀏覽器沒有可用連接,則可能會在請求發送之前超時。 在jQuery 1.4.x及以下版本中,如果請求超時,XMLHttpRequest對象將處於無效狀態;訪問任何對象成員可能會拋出異常。 在Firefox 3.0+中,只有,腳本和JSONP請求不能被超時取消;腳本即使在超時時間後到達,也會運行。 http://api.jquery.com/jQuery.ajax/

+0

在REST請求超時後還會發生什麼?它調用錯誤方法嗎? – sublime 2013-04-04 20:24:53