与更推荐 Q 或回调的节点异步调用函数
call functions in async with node which is more recomended Q or callback
我的节点应用程序具有内部调用其他两个函数的功能,我想为其使用一些异步行为,在这种情况下建议使用什么。
例子会很有帮助。
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');
})
}
还有一件事,正如我到目前为止所看到的,async 是节点框架的工作方式,添加像 Q 这样的额外库并不过分吗?
我什至不明白你为什么特别需要承诺。
function myHandler(req, res) {
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);
writeStream.on('finish', function() {
res.status(200).send('ok');
});
writeStream.end();
});
}
或者,您可以将传入的流直接通过管道传输到您的文件流中,并编写更少的代码。
function myHandler(req, res) {
var filePath = 'C://test.txt';
var writeStream = fs.createWriteStream(filePath, {flags: 'w'});
req.pipe(writeStream);
req.on("end", function() {
res.status(200).send('ok');
});
}
我的节点应用程序具有内部调用其他两个函数的功能,我想为其使用一些异步行为,在这种情况下建议使用什么。 例子会很有帮助。
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');
})
}
还有一件事,正如我到目前为止所看到的,async 是节点框架的工作方式,添加像 Q 这样的额外库并不过分吗?
我什至不明白你为什么特别需要承诺。
function myHandler(req, res) {
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);
writeStream.on('finish', function() {
res.status(200).send('ok');
});
writeStream.end();
});
}
或者,您可以将传入的流直接通过管道传输到您的文件流中,并编写更少的代码。
function myHandler(req, res) {
var filePath = 'C://test.txt';
var writeStream = fs.createWriteStream(filePath, {flags: 'w'});
req.pipe(writeStream);
req.on("end", function() {
res.status(200).send('ok');
});
}