0
這裏的問題是我有一個函數使用ajax請求將值返回給myBookmarks變量。這個變量需要在JavaScript的剩餘部分(未顯示)執行之前分配。因此設置async:false會有訣竅,但在Firefox中,我得到:JavaScript,使用withCredentials返回在異步請求期間分配的值
在窗口上下文中,同步模式不再支持使用XMLHttpRequest的withCredentials屬性。
我一直在追求一個使用setTimeout的解決方案,但setTimeout中的匿名函數無法將書籤的值返回給上層函數。
所以問題是,如何暫停index()函數內的執行並將書籤的值返回到上層myBookmarks var而不使用async:false?
var myBookmarks = index();
function index() {
var bookmarks = false;
$.ajax({
xhrFields: {
withCredentials: true
},
crossDomain: true,
async: false,
url: BOOKMARKS_URL,
contentType: 'application/json',
dataType: 'json',
success: function(data){
if (!data.errors) {
// INDEX SUCCESS
bookmarks = data;
} else {
// INDEX FAILURE
}
}
});
return bookmarks;
}
如果你不能讓一個同步請求,那麼有沒有辦法返回函數的響應。請參閱[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call)替代解決方案(您基本上必須重構您的代碼以使用回調/承諾)。 –
歡迎來到** async **的精彩世界!你不能那樣做。 – SLaks
謝謝@FelixKling。 – jerome