所以我目前对此完全感到困惑。我有一些执行ajax调用的javascript,但是我确实需要将数据返回到一些全局变量(供其他函数使用)。
var id;
var title;
var author;
var body;
var date;
function getListDetails() {
$.ajax({
type: 'GET',
dataType: 'json',
url: 'url_to_api_here',
success: listCallback,
complete: test // had tried a complete function, but not quite sure what to put here
});
};
function listCallback() {
var listId = scriptData.getAttribute('data-id'); //from a script tag currently in html
var arrayToObject = (array) =>
array.reduce((obj, item) => {
obj[item.id] = item
return obj
}, {})
var listObject = arrayToObject(response);
var properties = listObject[listId];
var title = properties.title;
var author = properties.author;
var body = properties.body;
var date = properties.date;
}
从我的研究中,我了解到ajax本质上是异步的,并且将其设置为同步确实是一种不好的做法。但是,我确实需要返回在回调函数中设置的这些变量,以便可以在成功函数之外使用它们。有没有办法做到这一点?我到处都看了看,但尝试返回的数据似乎没有任何效果。
我确实尝试过Barmar的建议,但是在“ complete”功能之外,变量仍未定义。