Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 如何通过库请求通过HTTP POST请求获取响应体_Javascript_Node.js_Request - Fatal编程技术网

Javascript 如何通过库请求通过HTTP POST请求获取响应体

Javascript 如何通过库请求通过HTTP POST请求获取响应体,javascript,node.js,request,Javascript,Node.js,Request,我通过库请求发出HTTP POST请求,但无法获得响应体 在控制台日志中,我看到了正确的答案,但函数getBlock会重新运行0 我的控制台日志: Block num: 0 617635 问题是您的请求呼叫。这是回调风格。这意味着将首先执行return blockcount,blockcount=body.result;将在asyn调用完成时执行。你有两个选择 将回调样式转换为promise并在变量中获取结果。 或者在回调中返回响应。 wait this.request不起作用,因为reque

我通过库请求发出HTTP POST请求,但无法获得响应体

在控制台日志中,我看到了正确的答案,但函数getBlock会重新运行0

我的控制台日志:

Block num: 0
617635
问题是您的请求呼叫。这是回调风格。这意味着将首先执行return blockcount,blockcount=body.result;将在asyn调用完成时执行。你有两个选择

将回调样式转换为promise并在变量中获取结果。 或者在回调中返回响应。 wait this.request不起作用,因为request不返回承诺,所以wait没有任何用处

相反,使用request-promise模块并去掉回调

或者,由于请求处于维护模式,并且不再获得新功能,因此切换到已经与承诺一起工作的got模块

const rp = require('request-promise');

private async getBlock() {
    let blockcount: Number = 0;
    var options = {
        body: { jsonrpc: '2.0', method: 'getblockcount', params: [] },
        ...this.options
    };

    let body = await rp(options);
    console.log(body.result);
    blockcount = body.result;

    return blockcount;
}
编辑2020年1月-维护模式下的请求模块


仅供参考,请求模块及其衍生产品(如)目前处于维护模式,不会积极开发以添加新功能。你可以阅读更多关于推理的内容。中有一个备选方案列表,并对每个备选方案进行了讨论。我一直在使用我自己,它从一开始就使用承诺,使用起来很简单。

等待这个。请求不起作用,因为请求不返回承诺。相反,使用request-promise模块并去掉回调。或者,由于请求处于维护模式,并且不再获得新功能,请切换到已经与承诺一起工作的got模块。谢谢-它工作正常-只需使用请求即可-promise@jfriend00我写了一封回信,请回答你的要求。
const rp = require('request-promise');

private async getBlock() {
    let blockcount: Number = 0;
    var options = {
        body: { jsonrpc: '2.0', method: 'getblockcount', params: [] },
        ...this.options
    };

    let body = await rp(options);
    console.log(body.result);
    blockcount = body.result;

    return blockcount;
}