我调用Promise API从ajax返回。我想从then()函数返回这样的.. 我的Ajax功能:
function get_data(url, id) {
return new Promise(function (resolve, reject) {
xmlHttp.open("GET", url + "/" + id, true);
xmlHttp.onerror = reject;
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
resolve(JSON.parse(this.responseText));
}
};
xmlHttp.send(null);
});
}
调用ajax函数:
var class_name = '';
var url = site_url + "/student/get_classes";
var id = 2;
class_name = get_data(url, id).then(function (result) {
console.log(result);//first console
return result.name;
});
console.log(class_name);//second console
我的控制台:
第一个控制台:Object {id: "1", name: "Class One", shift_id: "1", session_id: "1"}
第二个控制台:Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
如何显示Promise Object的[[PromiseValue]]形式
它是否可行。提前谢谢。
答案 0 :(得分:0)
您无法从承诺外获取值,因为该值尚未计算。这是因为console.log(class_name)
在 console.log(result)
之前被称为,因为节点是异步的并且是单线程的。 get_data
来电尚未回复,并且正在后台进行。
相反,您应该根据里面的承诺回调执行任何操作,当前您将返回result.name
。