Node.js请求 - 执行顺序

问题描述:

所以我对Node开发很陌生。我的第一个个人项目需要创建一个页面的html内容的本地txt文件进行进一步操作。我不知道在请求调用之前为什么程序中的其他所有内容都被执行了。例如在下面的代码片段中,“Two”总是会在“One”之前出现。我知道这可能是简单的我想念但我希望从中学到一些东西。Node.js请求 - 执行顺序

var request = require('request'); 
 
var fs = require('fs'); 
 

 

 
request('https://www.google.com', function (response, body) { 
 
    \t console.log("One") 
 
    fs.writeFile("ToParse.txt", body) 
 
    
 
}); 
 

 
console.log("Two")

“两个” 永远之前的 “一”

因为Node.js的是异步

它的意思比以前的功能赢得了”来不停止执行过程,而是调用函数而不管前面的函数是否已经停止执行

如果你想有一个序列使用CallbacksPromises

这是因为的NodeJS/JavaScript的,因为它是单线程的异步性质,请求模块正在执行异步操作和aftering操作的完成或失败,它会调用我们称之为回调函数的最后一个函数。

请求将需要时间来执行它的操作,同时做一个GET方法www.google.com

节点将会把该操作在队列中,并执行其他操作,你的情况console.log它安慰结果并在稍后从队列中执行排队操作。

参观此 https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop

回调函数的第一个参数应始终错误,如果没有发生错误,否则它将为空。

request('http://www.google.com', function (error, response, body) { 
    // your code 
}) 

你的第二个参数的函数传递request功能是一个回调。它将在请求处理后被调用。 Node.js的本质是,不用等待(阻塞)就可以连续执行代码,以便调用回调。当请求完成时(失败/成功),你的回调将被调用。这就是为什么在“One”之前打印“Two”