2014-09-23 1 views
2

내가 nodejs 코드 당으로제어 흐름이 코드 실행 순서를 따르지 않는 이유는 무엇입니까?

"use strict"; 

const 
    fs = require('fs'); 

fs.readFile('target.txt',function(err, data){ 
if (err) { throw err; 
} 
    console.log(data.toString()) 

}) 

fs.writeFile('target.txt','writing some content',function(err){ 
    if(err) 
    throw err; 
console.log("file saved") 
}) 

에서 다음 예제를 시도했다, 나는 그것의 내용을 인쇄, 파일을 읽을. 그런 다음 동일한 파일에 내용을 작성하고 콘솔에 저장된 텍스트 파일을 인쇄합니다. 하지만 내 출력은

file saved 
writing some content 

writeFile 기능이 readFile보다는 먼저 실행된다. 왜 이런 일이 일어나고 어떻게 피할 수 있습니까?

+0

나는 node.js가 자동 완성을 가지고 있지만,';'를 사용하면 너무 많은 오류 (다른 경우)를 방지 할 수 있습니다. – DrakaSAN

답변

5

두 함수의 두 번째 인수로 전달하는 함수는 콜백입니다. 실행이 완료되면 실행되고 실행 순서가 보장되지 않습니다.

읽기가 완료된 후 쓰기 발생을 보장하려면 readFile 메서드의 콜백에 쓰기를 트리거하도록 코드를 배치하십시오.

"use strict"; 

const fs = require('fs'); 

fs.readFile('target.txt', function(err, data) { 
    if (err) throw err; 
    console.log(data.toString()); 

    fs.writeFile('target.txt', 'writing some content', function(err) { 
     if(err) throw err; 
     console.log("file saved") 
    }); 
}); 
관련 문제