【发布时间】:2015-09-08 19:58:30
【问题描述】:
我的节点应用程序具有内部调用其他两个函数的函数,我想为它使用一些异步行为,推荐在这种情况下使用。 这个例子会很有帮助。
function myFunction(req,res){
//从这里这是我想在函数中使用warp的第一个地方
var dataChunks = [],
dataRaw,
data;
req.on("data", function (chunk) {
dataChunks.push(chunk);
});
req.on("end", function () {
dataRaw = Buffer.concat(dataChunks);
data = dataRaw.toString();
console.log(data);
//这是我想在函数中扭曲并在第一个函数之后调用的第二个代码
var filePath = 'C://test.txt';
var writeStream = fs.createWriteStream(filePath, {flags: 'w'});
writeStream.write(data);
res.status(200).send('ok');
})
}
还有一件事,正如我到目前为止所看到的,异步是节点框架的工作方式以及添加像 Q 这样的额外库不是矫枉过正吗?
【问题讨论】:
-
您需要描述您要使用您拥有的代码解决的问题。 是,推荐使用 Promises 来管理 node.js 中的异步代码。您可以使用内置于 node.js 的 Promise 支持,或者您可以选择第三方库,如 Q 或 Bluebird(我最喜欢的是 Bluebird)。那是你的选择。那里没有正确或错误的答案,这取决于您喜欢什么,您认为哪些功能很重要,等等......添加一个库来帮助您管理异步代码并不过分。这是一个服务器进程 - 您不需要最小化使用的库。
-
@jfriend00-谢谢!代码正在做两件不同的事情:1.从请求正文中获取数据,2.将其(请求正文数据)写入文件,您如何推荐做吗?请提供示例,因为我是 asyhc 的新手......
-
@JhonDree 看起来你想要的是流,而不是承诺。
-
@thefourtheye- 谢谢,为什么是流媒体?可以举个例子吗?
标签: javascript node.js callback promise q