Извините за заголовок, но не смог придумать ничего по-настоящему информативного и лаконичного.
Моя ситуация такова, что я запускаю setTimeout и хочу, чтобы он мог выполняться в середине функции JS(он используется для решения проблемы с внедрением функций GM в веб-страницу).
unsafeWindow.testG = function(key, dValue){
var rValue;
setTimeout(function(){rValue = GM_getValue(key, dValue);}, 0);
alert(rValue);
alert(rValue);
return(rValue);
}
В трех тестах rValue по-прежнему не определено (что имеет смысл, поскольку JS является однопоточным по большей части).
Итак, у меня есть 2 решения, о которых я подумал.
Избранное: Есть ли способ сказать JS о том, чтобы он спал в середине функции и работал над второстепенными вещами (такими как Timeouts)?
Другое: Кто-нибудь знает, когда будет вызван этот тайм-аут?Может быть, после выполнения этой функции, но перед тем, как она будет вызвана, она снова запускается?В этом случае решение rValue global решило бы проблему (но немного усложнило кодирование).
Или будет ждать, пока все JS не будут выполнены?В этом случае мне, возможно, понадобится другой метод setTimeout для обработки результата.