如何在不放入数据的情况下返回Vue资源?

时间:2015-11-06 09:55:52

标签: javascript javascript-framework vue.js

我想直接返回结果(通常我们尝试放入数据并访问该数据是的。但现在我想要的是直接)。就像我们调用hello()函数时一样,我希望返回result变量。 我试着像下面那样,但是它没有回归。我该怎么办?

    hello: function() {
        var result = "";

        this.$http.get(window.location.href).success(function(data) {
            result = data;
        }).error(function (data, status, request) {

        });            

        return result;
    }

1 个答案:

答案 0 :(得分:2)

看起来它不会返回数据,因为请求是异步的。您的方法设置请求,然后在请求有机会将任何数据分配给result变量之前,立即同步返回。

您可以尝试稍微更改一下代码:

    hello: function() {
        var result = {};

        this.$http.get(window.location.href).success(function(data) {
            result.data = data;
            result.ready = true;
        }).error(function (data, status, request) {

        });            

        return result;
    }

这应该使您能够访问其他地方的数据(如result.data),但只有在异步查询成功后才能访问 result.ready标志会告诉您是否以及何时发生。

在我看来,与承诺合作肯定会更好,例如,使用jQuery Deferreds and promisesES6 promises以及polyfill