首页 > 解决方案 > 如何使 API 响应成为全局变量,以便在后续 API 请求中再次使用

问题描述

这是代码

request.post({
    headers: {"content-type": "application/x-www-form-urlencoded"},
    url: "https://testardor.jelurida.com/nxt?",
    form: 
        {requestType: "sendMoney"}
    },
    function (error, response, body) {
        if (!error && response.statusCode == 200){
            var transactionBytes = JSON.parse(response.body).transactionBytes;
        }
    },
);

在此之后,我想获取 transactionBytes 并将其传递给另一个 API 请求。如何使其成为全局变量?我尝试了 global.transactionBytes 和 window.transactionBytes 并没有奏效。我也读过声明这样的全局变量是不好的,有没有更好的方法来做到这一点?

标签: node.js

解决方案


如果它只是一个文件,您可以声明全局变量,只在函数的外部声明。

var globalvariable = 0;

function ApiCall() {
request.post({
    headers: {"content-type": "application/x-www-form-urlencoded"},
    url: "https://testardor.jelurida.com/nxt?",
    form: 
        {requestType: "sendMoney"}
    },
    function (error, response, body) {
        if (!error && response.statusCode == 200){
            var transactionBytes = JSON.parse(response.body).transactionBytes;
        }
    },
);
}

如果你想在多个文件中使用相同的全局变量,你可以创建一个帮助文件示例

帮助.js

var globalVariable = 0;
module.exports = globalVariable

第一个文件.js

var globalVariable = require('./help');
   function ApiCall() {
    request.post({
        headers: {"content-type": "application/x-www-form-urlencoded"},
        url: "https://testardor.jelurida.com/nxt?",
        form: 
            {requestType: "sendMoney"}
        },
        function (error, response, body) {
            if (!error && response.statusCode == 200){
                var transactionBytes = JSON.parse(response.body).transactionBytes;
                globalVariable = transactionBytes;
            }
        },
    );
    }

另一个文件.js

var globalVariable = require('./help');
function someotherthing() {
  console.log(globalVariable)
}

除非真的需要,否则使用全局变量是不好的,其他方法就是将值传递给下一个函数。全局变量如果使用不当会导致内存泄漏


推荐阅读