Этот код слишком расплывчат:
var raw_data = ajax_fetch_data ();
Обычно это так:
// url = ...
// data = ...
create_ajax_request(url, data, callback);
// This will continue to execute like normal
// ...
// ...
// ...
// Now, in a differnt part of the code:
function callback() {
// Sometime later, when AJAX returns data, this is called.
}
Таким образом, по сути, у вас есть два потока: основная программа, в которой вы «запускаете» запрос, и функция обратного вызова, которая вызывается по завершении запроса. Это все еще игнорирует детали.
Если вы хотите SJAX (неправильное сокращение для синхронного javascript & xml), то вы можете использовать что-то вроде jQuery:
var result = null;
$.ajax({
aync: false,
data: data,
url: url,
success: function(data) {
result = data;
}
});
// result is populated before $.ajax() moves on, so you can use it right after
console.log('result: ' + result);
Однако, это выполняет ожидание занятости (т. Е. Ваш браузер застрял / заблокирован до тех пор, пока данные не поступят ... может быть несколько мс, может быть минута, кто знает). Так что это следует использовать только при необходимости. Если вы просто хотите получить данные и затем обработать их, используйте обратные вызовы.
// Call this to start a request
function startRequest() {
data = ...
create_ajax_request(url, data, continueRequest);
}
// This is called once we have the data
function continueRequest(data) {
alert(data);
}
Это более типично для программ AJAX.