对于客户端Node.js应用程序,我应该“等待”完成http.request,例如,
console.log('Before http request')
responseData = x.exec(parms)
console.log('Process data')
Module x:
exports.exec = function exec (params) {
x = https.request(xxxx, function() {
x.on('data' ...
x.on('end'...
return (returnData)
}
}
如果可能,应该在不使用任何co()或其他外部模块的情况下完成。我已经阅读了各种各样的手册,听了一堆教程并尝试了各种各样的“yield”和函数*组合,但我只是不明白:(
有谁愿意帮助新手?
答案 0 :(得分:1)
您不能在异步函数中使用“return”指令。而不是做“return(returnData)”,而是进行回调“回调(状态,代码,返回数据)”或简单地“回调(returnData)”。
console.log('Before http request')
responseData = null; //Just declaration
x.exec(params, function(status, data) {
responseData = data;//You can check status to see if all happened fine
}
console.log('Process data')
Module x:
exports.exec = function exec (params, callback) {
x = https.request(xxxx, function() {
x.on('data' ...
x.on('end'...
callback(1, returnData); // you can made an x.on('error'... method where statuse can be 0
}
}
}
答案 1 :(得分:0)
您使用生成器“产生”一个承诺,以便生成器将停止运行,直到该承诺被解决或拒绝。以下是使用generator + promise进行异步操作的示例:jsfiddle
io.on('connection', ...)