这里的问题是我有一个使用 ajax 请求将值返回给 myBookmarks 变量的函数。需要在 JavaScript 的其余部分(未显示)执行之前分配此变量。所以设置 async: false 就可以了,但在 Firefox 中,我得到:
窗口上下文中的同步模式不再支持使用 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;
}