Почти все места в узле, где используются функции обратного вызова, являются асинхронными. Код, стоящий за функциями обратного вызова, вероятно, будет выполнен первым, чем код в функциях обратного вызова, особенно операции базы данных. Конечно, Node также предоставляет функции для синхронных версий, таких как операции файлов. fs.readfilesync () - синхронная версия fs.readfile ().
Итак, вопрос в том, асинхронно ли Фореч ()? Логически говоря, если синхронизация не добавлена, она должна быть асинхронной.
Кода -копия выглядит следующим образом:
var arr = ['a', 'b', 'c'];
var str = '123';
arr.foreach (function (item) {
str += item;
while (true) {}; // Используйте мертвую петлю, чтобы засунуть ~~
});
console.log (str);
Запустите приведенный выше код, и он застрял, без какого -либо вывода. Полем
Итак, Foreach () в узле синхронизирован! !
Когда я впервые использовал узел, я не рассмотрел эту проблему, поэтому я написал его синхронно. Я вдруг подумал, что после теста я был шокирован и подумал, что предыдущий код был написан неправильно.
Если в некоторых случаях Foreach необходимо обработать асинхронно, Google It, и есть узел-арест, вы можете попробовать его ~~ Portal: https://github.com/cfsghost/node-array
Эта работа была создана http://www.cnblogs.com/imyzf