以下ajax调用我正在使用承诺
function hit_db()
{
return new Promise(function (resolve, reject)
{
$.ajax({
url: target_url,
type: "GET",
async: true,
crossDomain: true,
success: function (data) { //<--Ultimately I want this snippet to return this data variable
resolve(data);
},
error: function (err) {
reject(error);
}
});
});
}
return hit_db().then(data => {. // <--EDIT
return data;
});
每当我尝试返回数据时,我都会得到obj Promise
而不是应该说Great! Success!
的服务器响应
我认为一旦承诺得到满足,我就可以返回服务器响应的数据。
我在这里谈论如何从我正在获得的异步响应中解包Promise对象
然后使用async / await语法stills返回一个obj Promise
function hit_db()
{
return new Promise(function (resolve, reject)
{
$.ajax({
url: target_url,
type: "GET",
async: true,
crossDomain: true,
success: function (data) {
resolve(data);
},
error: function (err) {
reject(error);
}
});
});
}
async function handler() {
try {
var data = await hit_db();
return data;
}
catch (error) {
throw new Error('Network call failed');
}
}
return handler();
旁注:我已经用我的ajax调用解决了任何可能的CORS问题
答案 0 :(得分:0)
您将返回hit_db().then(...)
。 .then(...)
的返回值是一个承诺。您想要达到的“取消”水平是不可能的。
正如Gustavo所说,这需要async / await。
使用promises,您可以进行链接以简化异步工作流程
hit_db()
.then(...)
.then(...)
.then(...)
.catch(...)