Как отметил Джон Скит, Rx
перенес TPL
в .NET 3.5
.
Я сделал Nuget (называемый TaskParallelLibrary ) из их System.Threading.dll
, для более легкой интеграции.
Вы можете получить его из http://nuget.org/packages/TaskParallelLibrary .
Не более того, чем два предложенных вами способа, но вот еще один
for(var it = 0; it < 2; it++)
{
(function() {
var m = it;
setTimeout(function() {
alert(m);
}, 1);
})();
}
По сути, вам нужно зафиксировать значение переменной в замыкании. Этот метод использует немедленно вызываемую анонимную функцию для захвата значения внешней переменной it
в локальной переменной m
.
Вот Рабочая демонстрация , с которой можно поиграть. добавьте / edit к URL-адресу, чтобы увидеть код
Аналогично вышеприведенному решению, но самовызывается внутри функции setTimeout
for(var it = 0; it < 2; it++)
{
setTimeout(function(cur) {
return function(){
alert(cur);
};
}(it), 1);
}