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 请求的异步性质。
我有一个对象,其功能如下: 因为它正在进行 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 请求的异步性质。