Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我发送res.send(body)时,我在body中没有定义_Javascript_Node.js - Fatal编程技术网

Javascript 当我发送res.send(body)时,我在body中没有定义

Javascript 当我发送res.send(body)时,我在body中没有定义,javascript,node.js,Javascript,Node.js,res.send(body)发送未定义我在res.send(body)之前放了一个console.log(body)它显示未定义的和内部变量post_req。body有值正如我在评论中提到的,您正在尝试使用带回调的异步等待。不能将异步等待语法用于回调。使用Async/Await和promissions 您必须为回调编写承诺包装,或者您可以使用请求承诺模块来返回承诺 承诺包装: app.post('/getDetails', async function (req, res) { var

res.send(body)发送未定义我在res.send(body)之前放了一个console.log(body)它显示未定义的和内部变量post_req。body有值

正如我在评论中提到的,您正在尝试使用带回调的异步等待。不能将异步等待语法用于回调。使用Async/Await和promissions

您必须为回调编写承诺包装,或者您可以使用请求承诺模块来返回承诺

承诺包装:

app.post('/getDetails', async function (req, res) {
    var body
    var post_req = await https.request(post_options, function (res) {
        res.setEncoding('utf8');
        body = '';
        res.on('data', function (chunk) {
            body += chunk;
            console.log(body);
            console.log(JSON.parse(body));
            newBody = body;
        }).on('error', function (error) {
            console.log(error)
        });
    });
    post_req.write(requestBody);
    post_req.end();
    res.send(body);

});

的副本无法获得清晰的图片我在FunctionSync Wait中使用了async/await用于承诺,但您正在回调中启动body变量。将SetTimeout置于res.send(body)上是一个很好的做法,因为我的body将被初始化为回调函数的值,或者我是否应该执行其他可能重复的操作
app.post('/getDetails', async function (req, res) {
    var body

    function httpReq(post_options){
      return new Promise(function(resolve, reject){
         https.request(post_options, function (res) {
            res.setEncoding('utf8');
            body = '';
            res.on('data', function (chunk) {
               body += chunk;
               console.log(body);
               console.log(JSON.parse(body));
               newBody = body;
               resolve();
            }).on('error', function (error) {
               console.log(error)
               reject()
            });
         });
      })
    }

    var post_req = await httpReq(post_options)
    ...
    ...
    res.send(body);

});