我试图从一个承诺中得到一个价值,但我做不到。为什么它不起作用?
我只得到Promise { <pending> }输出。
函数
function username() {
return new Promise(function (resolve, reject) {
user.where('id', req.id).fetch().then(function (data) {
data = data.toJSON();
resolve(data);
});
});
}变量
var r = username().then(function (a) {
return a.username;
});
console.log(r);如果我删除return并放置console.log(a.username),它可以工作,但这不是我想要的结果。我想将返回的值放入r中。
编辑#1
我需要将返回的值传递到视图中(如下面所示),因此必须能够在当时()链之外访问它们。
res.render("frontend/index", {
value1 : value1,
value2 : value2,
value3 : value3
});编辑#2
我用的是Express.js
现在我得到了"Error: Can't set headers after they are sent."错误,希望现在更清楚。当用户试图访问页面时,我查询数据库并将变量传递给视图,但每个视图有多个操作(用户名、post信息、注释等)。
exports.index = function (req, res) {
function username() {
return new Promise(function (resolve, reject) {
user.where('id', req.id).fetch().then(function (data) {
data = data.toJSON();
resolve(data);
});
});
}
username().then(function (b) {
res.render('backend/index', {
username: b.username
});
});
function post() {
return new Promise(function (resolve, reject) {
post.where('id', req.params.postId).fetch().then(function (data) {
data = data.toJSON();
resolve(data);
});
});
}
post().then(function (a) {
res.render('backend/index', {
post: a.post
});
});
};发布于 2015-11-22 04:33:17
尝试执行下一个进程,其中在fulfilled内部使用r的r值来访问来自Promise r的异步返回值。
var r = username().then(function (a) {
return a.username;
});
r.then(function(data) {
// `data` : `r` return value
// do stuff with `data` here
});https://stackoverflow.com/questions/33851546
复制相似问题