콜백 함수가 사용되는 노드의 거의 모든 장소는 비동기식입니다. 콜백 함수 뒤에있는 코드는 콜백 함수, 특히 데이터베이스 작업의 코드보다 먼저 실행될 수 있습니다. 물론 Node는 파일 작업과 같은 동기 버전의 기능도 제공합니다. fs.readfilesync ()는 fs.ReadFile ()의 동기 버전입니다.
그래서 문제는 foreach () 비동기식입니까? 논리적으로 말하면, 동기화가 추가되지 않으면 비동기식이어야합니다.
코드 사본은 다음과 같습니다.
var arr = [ 'a', 'b', 'c'];
var str = '123';
arr.foreach (function (item) {
str += 항목;
while (true) {}; // 데드 루프를 사용하여 ~~
});
Console.log (str);
위의 코드를 실행하면 출력없이 막히게됩니다. .
따라서 Node의 foreach ()가 동기화됩니다! !
처음 노드를 사용했을 때이 문제를 고려하지 않았으므로 동기식으로 썼습니다. 나는 갑자기 시험 후 충격을 받았으며 이전 코드가 잘못 쓰여졌다 고 생각했다.
경우에 따라 Foreach를 비동기식으로 처리 해야하는 경우 Google과 Node-Array가 있으면 ~~ 포털 : https://github.com/cfsghost/node-array를 시도해 볼 수 있습니다.
이 작업은 http://www.cnblogs.com/imyzf에 의해 만들어졌습니다