node.js函数callback
我是新的node.js
我不知道如何在node.js
执行下面的操作
var data ="sampledata", name="testname", id=1; myTask(data,name,id); function myTask(data,name,id){ var job = jobDetails(id,data) } function jobDetails(id,data){ // some operations return jobs }
惊愕的沉默的原因是,以目前的forms回答你的问题几乎是不可能的。 但无论如何,我会给它一个镜头。
大多数时候你不执行callback。 你可能会把你的函数传给一个API,并在某个时候调用你的函数。 这就是执行callback的API,而不是你。 作为一个例子,下面是使用node.js的FileSystem API的一种方法:
fs.readFile('/etc/passwd', {encoding:'utf-8'}, function (err, data) { if (err) { console.error(err); } else { console.log(data); } });
第三个参数是一个函数,通常称为callback。 fs.readFile()
函数设置I / O并立即返回。 在将来的某个时刻,I / O完成并callback你传入的函数(因此称为callback ),提供一个错误代码和可能的数据,在这一点上你的函数可以做它想要的。
如果你想自己执行一个callback函数,你可以编写一个函数来调用这个函数,例如:
function pass_double_x_to(x, cb) { var two_x = 2 * x; cb(two_x); } pass_double_x_to(21, function(tmol) { console.log("zOMG, " + tmol + "!"); });
现在它是你的函数, pass_double_x_to
,正在function(tmol) { … }
上执行callback。 这实际上是一个非常愚蠢的使用callback,因为你的函数可以返回double-x。 使用callback使生活更加复杂,没有理由。
fs.readFile()
和其他许多node.js API使用callback函数的原因是,它几乎所有阻塞操作都是asynchronous执行的,所以它不会阻塞主线程,这会使得整个服务器在操作系统closures时暂停,文件。 所以,与其等待文件被读取并返回内容,它将开始一个asynchronousI / O操作,并立即返回,以便在程序可以closures时执行其他操作(如为其他连接客户端服务),而I / O在后台进行中。 您将callback传递给fs.readFile()
以便底层I / O子系统在数据最终到达时知道如何处理数据,因为那时主线程已经在其他冒险中消失了。 这仍然使生活更加复杂(有时甚至是可怕的),但这是为了一个好的原因。
- JavaScript:浏览器支持vs纯语言支持:setTimeout,setInterval
- Coffeescript:数组元素与另一个数组相匹配
- {errorCode:'INVALID_REQUEST_BODY',当试图发送信封
- 如何在feathersjs项目中使用sequelizejs创build外键
- Twitter Bootstrap和typeahead不能一起正常工作
- 使用带有Google身份validation的节点护照来限制login到特定的域
- 使用Vue + Webpack使用Puppeteer(无头Chrome)时的依赖性错误
- NodeJS和ExpressJS中的多用户密码重置并发问题
- 如果函数不使用任何I / O,NodeJSasynchronous函数的目的是什么?