return 数据来自 javascript 函数的 ajax 调用

return data coming through an ajax call from a javascript function

我有一个对象,其功能如下: 因为它正在进行 ajax 调用,所以它只是 return 空数组。 我如何return响应后的数据。

var data = [];
var ApiUtil = {
    fetchAll: function (resourceName) {
        request
            .get(url + resourceName)
            .set('Accept', 'application/json')
            .end(function (err, res) {
                if(!err) {
                    data = res.body;
                }else{
                    console.log('error');
                }
            });

        return data;

}

return在请求结束前执行,这就是数据为空的原因。

您可以简单地使用回调。

var ApiUtil = {
    fetchAll: function (resourceName, callback) {
        var data = [];
        request
            .get(url + resourceName)
            .set('Accept', 'application/json')
            .end(function (err, res) {
                if(!err) {
                    data = res.body;
                }else{
                    console.log('error');
                }
                callback && callback(data)
            });       
}

阅读更多关于 promises

你应该return承诺,而不是价值

fetchAll: function (resourceName) {

    new Promise(
        function(resolve, reject) {
            request
        .get(url + resourceName)
        .set('Accept', 'application/json')
        .end(function (err, res) {
            if(!err) {
                data = res.body;
                resolve(data);
            }else{
                console.log('error');
                reject('error');
            }
        });
        });


    return data;
}

然后在您的代码中像这样使用此函数:

fetchAll(someParam)
.then(function(result) {
    // do sth wirh result
});

它有助于处理 AJAX 请求的异步性质。