所以我是Node开发的新手。我的第一个个人项目需要创建页面的html内容的本地txt文件以供进一步操作。我不知道为什么程序中的其他所有内容都在请求调用之前执行。例如,在下面的代码片段中,“Two”将始终位于“One”之前。我知道这可能是我想念的一些简单但我希望从中学到一些东西。
var request = require('request');
var fs = require('fs');
request('https://www.google.com', function (response, body) {
console.log("One")
fs.writeFile("ToParse.txt", body)
});
console.log("Two")
答案 0 :(得分:1)
"两个"将永远在" One"
之前
因为Node.js是异步的
它的含义比以前的函数不会停止执行过程而是调用函数而不管先前的函数是否已停止执行
如果您希望序列使用Callbacks
或Promises
答案 1 :(得分:1)
这是因为nodejs / JavaScript的异步性质,因为它是单个Threaded,Request模块正在执行异步操作,在完成或操作失败后,它将调用我们称之为回调函数的最后一个函数。
在执行www.google.com
的获取方法时,请求需要时间来执行操作
Node会将该操作放入队列并执行其他操作,在您的情况下
console.log
它会调度结果,稍后它将从队列中执行排队操作。访问此 https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop
回调函数第一个参数应始终为错误,如果没有错误发生,则为null。
request('http://www.google.com', function (error, response, body) {
// your code
})
答案 2 :(得分:0)
作为函数request
的第二个参数传递的函数是回调函数。一旦处理请求,就会调用它。 Node.js
的本质是,连续执行代码而不等待(阻止)调用回调。当请求完成(失败/成功)时,将调用您的回调。这就是为什么" Two"在" One"