Javascript NodeJs中的HTTP请求-需要了解流的帮助吗
我是nodejs/javascript的新手,正在努力找到实现我想要的东西的方法 我希望程序在执行第70行(最后第二行)的代码之前等待https请求。我怎样才能做到这一点?当前,代码从第71行开始执行,而http请求的结果稍后到达。我想在以后的代码中使用变量total的值 以下是文本中的代码:Javascript NodeJs中的HTTP请求-需要了解流的帮助吗,javascript,node.js,Javascript,Node.js,我是nodejs/javascript的新手,正在努力找到实现我想要的东西的方法 我希望程序在执行第70行(最后第二行)的代码之前等待https请求。我怎样才能做到这一点?当前,代码从第71行开始执行,而http请求的结果稍后到达。我想在以后的代码中使用变量total的值 以下是文本中的代码: // Step 1 - Get total from firebase with the above details - Make a POST request to firebase var p
// Step 1 - Get total from firebase with the above details - Make a POST request to firebase
var postData = querystring.stringify({
order_id: orderUID,
res_key: res_key
})
const options = {
hostname: process.env.HOST,
port: 443,
timeout: 5000,
path: process.env.CLOUD_GETTOTAL,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
}
const request = https.request(options, resCFS => {
resCFS.on('data', d => {
// if (resCFS.status==200) {
total = Number(d)
console.log('Total: '+total) // I WANT VALUE OF THIS FIRST
// }
})
})
request.on('error', error => { //C4 Server error or Comms Error
console.error(`Error: ${error}`)
//res.sendStatus(500) // Send status to the app
//return
})
request.write(postData)
request.end() ///// LINE 70
console.log('Total End: '+total) // THIS EXECUTES FIRST
请指出文本代码中哪一行是第71行,而不是一张图片(有些人看不懂)。您正在尝试将
wait
与不返回承诺的函数一起使用。因此,那些等待的代码行是无用的。此外,您使用的是普通异步回调,而不是在这些回调中处理结果。您需要回到绘图板,了解如何在nodejs中编写异步代码,或者按照文档进行操作,或者从stackoverflow上的数千个这样的示例中学习。@jfriend00不在回调中处理结果是什么意思。。。在…上('data'…是一个回调,我试图在那里获取值?发生了什么错误?这段代码的意义是什么?您似乎试图获取一些total
值,但没有对其进行任何处理。请显示或描述您真正试图做的事情。是的,最后的三行在异步ca之前执行llback之所以会这样做,是因为Javascript中的非阻塞异步操作就是这样工作的。如果您希望在得到结果后执行这些操作,那么将它们放在异步回调中,而不是放在函数的末尾。仅供参考,使用基于承诺的http请求库,例如。https.request()
的级别相当低,需要更多的代码才能正确处理所有内容。