繁体   English   中英

获取 boolean 在 request.get 节点调用中返回

[英]Getting boolean returns inside a request.get node call

原谅我,因为我已经涉足 Javascript(C# 家伙),但我在使用返回作为 boolean 条件时遇到了一些麻烦。 我在想它是因为它们在request.get中,因为每当我将return true放在request.get之外时,它们返回的 ins 不再是未定义的。 我花了很多时间查找并尝试不同的东西,甚至到了愚蠢的地步。 我提前感谢您的帮助。

var decisions = {

        sellExchange: function(rate, quantity) {
            if (this.checkDollarBallance(rate, quantity)) {
                //Do Something
            }
        },

        checkDollarBallance: function(rate, quantity) {
            request.get('http:123.123.123.123/exampleNodePage', function (error, response, body) {
                let balanceStatus = JSON.parse(body);
                if (balanceStatus.Available < (+rate * +quantity)) {
                    return false;
                } else {
                    return true;
                }
            });
        }
}

你需要知道request.get()是异步的 function。 因此,您可以使用回调或 promise 获得它的结果。

使用回调

var decisions = {

    sellExchange: function(rate, quantity) {
        this.checkDollarBallance(rate, quantity, function(result) {
            // Do Something
        });

    },

    checkDollarBallance: function(rate, quantity, callback) {
        request.get('http:123.123.123.123/exampleNodePage', function (error, response, body) {
            let balanceStatus = JSON.parse(body);
            if (balanceStatus.Available < (+rate * +quantity)) {
                return callback(false);
            } else {
                return callback(true);
            }
        });
    }
}

使用 promise

var decisions = {

    sellExchange: function(rate, quantity) {
        this.checkDollarBallance(rate, quantity)
            .then(result => {
                // Do Something
            });
    },

    checkDollarBallance: function(rate, quantity) {
        return new Promise((resolve, reject) => {
            request.get('http:123.123.123.123/exampleNodePage', function (error, response, body) {
                let balanceStatus = JSON.parse(body);
                if (balanceStatus.Available < (+rate * +quantity)) {
                    return resolve(false);
                } else {
                    return resolve(true);
                }
            });
        });
    }
}

使用 promise + async/await(如果您是 C# 用户, async/await可能更熟悉。)

var decisions = {

    sellExchange: async function(rate, quantity) {
        if (await this.checkDollarBallance(rate, quantity)) {
            // Do Something
        }
    },

    checkDollarBallance: function(rate, quantity) {
        return new Promise((resolve, reject) => {
            request.get('http:123.123.123.123/exampleNodePage', function (error, response, body) {
                let balanceStatus = JSON.parse(body);
                if (balanceStatus.Available < (+rate * +quantity)) {
                    return resolve(false);
                } else {
                    return resolve(true);
                }
            });
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM