在javascript上使用http请求的时间问题

时间:2017-06-28 15:42:10

标签: javascript axios

我现在正试图使用​​axios javascript来获取/发布api请求。但问题是我的Api get函数在从服务器接收数据之前返回结果。这是我的代码

function Api(base_url) {
    this.base_url = base_url;
}

Api.prototype = {
    constructor: Api,
    get: function (route) {
        var url = this.base_url + route;

        axios.get(url)
            .then(
                response => {
                    console.log(response.data.data);
                    return response.data.data;
                })
        return "hello";
    },
    post: function (route) {

    }
}

我打电话给这样的函数

api = new Api("http://localhost:8080/");
            var data = api.get("post/get");
            console.log(data);

而不是等待来自服务器的回复,我的函数返回“hello”作为返回数据。有人可以帮我解释为什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用此代码:

Api.prototype = {
    constructor: Api,
    get: function (route) {
        var url = this.base_url + route;

        axios.get(url)
            .then(function (response) {
                console.log(response.data.data);
                return response.data.data;
            })
            .catch(function (error) {
                return "hello";
            }
    },
    post: function (route) {

    }
}

答案 1 :(得分:0)

我认为这就是应该做的事情。 我从未使用过这个Api,但是对于常规的ajax请求,发送请求的函数将立即独立于请求/响应返回其值。完成请求后执行某些操作的最佳方法是在响应回调中调用所需的内容。 AJAX请求是异步的,并且没有干净的方法来调用执行AJAX请求的函数,并使相同的函数返回您的响应数据 - 除非您将AJAX请求转换为同步操作,但这是非常非常糟糕的做法。