я использую переменную для ограничения операций запроса пользователей, так же как и критическую область ОС。
//call 'fun' only if it is free(at the end of fun ,it will do isQuery=true)
var getInfo= function(param,callback){
if(!isQuery){
isQuery = true;
fun(param,callback);
}
}
но когда два запроса произошли одновременно, param
пошло не так, как A получил param
из B, в то время как B не вызвал fun успешно! Я думаю, что это проблема многопоточности,
Когда A был авторизован (isQuery == false
) для вызова 'fun', и непосредственно перед тем, как должно было исполниться предложение 'fun(param,callback)
', B вызвал getInfo
и передал новые param
и callback
getInfo
, но теперь isQuery == true
, B не авторизован, затем getInfo
пытался выполнить fun (param,callback)
с аргументами B, так что все пошло не так, я прав?
PS: пожалуйста, прости мой плохой английский ...
ps2: большое спасибо, но я все еще чувствую себя неуверенно, может быть, это не проблема многопоточности, но как это происходит? Существует только один экземпляр getInfo, поэтому он всегда будет содержать последний аргумент?