Ответ 1
Неблокирующая функция поиска
Array.prototype.contains = function(k, callback) {
var self = this;
return (function check(i) {
if (i >= self.length) {
return callback(false);
}
if (self[i] === k) {
return callback(true);
}
return process.nextTick(check.bind(null, i+1));
}(0));
}
Использование:
[1, 2, 3, 4, 5].contains(3, function(found) {
if (found) {
console.log("Found");
} else {
console.log("Not found");
}
});
Однако для поиска значения в массиве лучше использовать функцию поиска встроенного массива Javascript, так как она будет намного быстрее (так что вам, вероятно, не понадобится, чтобы она не блокировалась):
if ([1, 2, 3, 4, 5].indexOf(3) >= 0) {
console.log("Found");
} else {
console.log("Not found");
}
Также рассмотрим библиотеку underscore
, которая делает все кросс-платформенное: http://underscorejs.org/