Этот код будет выполняться в следующем порядке:
SetList (), затем Some.Code (), затем функция (данные), затем DoSomething ().
JavaScript является однопоточным и выполняется по порядку. Единственный способ, которым все будет происходить не синхронизировано, это если вы установите интервал / таймер в Some.Code () или функции (data), которая вызвала другую функцию.
Если у вас было:
var i=0;
functionCall() //some long process that sets i=1;
if (i==1) { alert("In Order!"); } else { alert("Out of Order!"); }
Это предупредит «В порядке» Но если бы у вас было:
var i=0;
setTimeout(functionCall, 1000) //some long process that sets i=1;
if (i==1) { alert("In Order!"); } else { alert("Out of Order!"); }
Это выполнит "Out of Order", , потому что третья строка будет выполнена перед вызовом functionCall ().
Обновленный ответ
Поскольку вы используете Ajax, я предполагаю, что вы делаете асинхронный вызов, что является причиной задержки. У вас есть функция обратного вызова, но она все еще ожидает вызова, поэтому Javascript переходит к выполнению следующей строки в ожидании.
Чтобы выполнить в нужном вам порядке, вам нужно сделать следующее:
SetList(); // initilizes the var _list
Some.Code(_list, function(data) {
// update list
DoSomething(_list); // operates on _list
});
Таким образом, вы можете убедиться, что DoSomething () вызывается при вызове вашего метода обратного вызова, а не раньше.