蓝鸟节点承诺,无法解决价值
bluebird node promises, cant resolve value
我正在尝试使用 bluebird 在我的快速应用程序中编写一些承诺,但是 运行 遇到了问题。我如何在此处访问 user
值 - resolve(response)
方法未返回它。
这是路由文件:
router.get('/auth/google/callback', (req, res) => {
google.getToken(req.query.code)
.then( () => { google.getUser() })
.then(user => {
console.log(user); //undefined - response is NOT defined here
})
});
这是用于管理从中导出方法的身份验证的文件。
module.exports.getToken = (code)=> {
console.log('step 1');
return new Promise((resolve, reject) => {
oauth2Client.getToken(code, (err, tokens) => {
if (!err) {
oauth2Client.setCredentials(tokens);
resolve();
}
});
});
};
module.exports.getUser = () => {
console.log('step 2');
return new Promise((resolve, reject) =>{
plus.people.get({
userId: 'me',
auth: oauth2Client
}, (err, response) => {
if(!err)
resolve(response); //response is defined here as the user
else
reject(err);
});
});
};
您似乎将路由文件中的 .then
链接到错误的方法,如果您期望 google.getUser()
到 return 您想要存储在用户中的值应该在该函数调用的末尾链接 .then
。
router.get('/auth/google/callback', (req, res) => {
google.getToken(req.query.code).then( () => {
google.getUser().then(user => {
console.log(user); //undefined - response is NOT defined here
}); //End getUser().then(..)
}); //End getToken.then(..)
}); //End router.get(..)
我正在尝试使用 bluebird 在我的快速应用程序中编写一些承诺,但是 运行 遇到了问题。我如何在此处访问 user
值 - resolve(response)
方法未返回它。
这是路由文件:
router.get('/auth/google/callback', (req, res) => {
google.getToken(req.query.code)
.then( () => { google.getUser() })
.then(user => {
console.log(user); //undefined - response is NOT defined here
})
});
这是用于管理从中导出方法的身份验证的文件。
module.exports.getToken = (code)=> {
console.log('step 1');
return new Promise((resolve, reject) => {
oauth2Client.getToken(code, (err, tokens) => {
if (!err) {
oauth2Client.setCredentials(tokens);
resolve();
}
});
});
};
module.exports.getUser = () => {
console.log('step 2');
return new Promise((resolve, reject) =>{
plus.people.get({
userId: 'me',
auth: oauth2Client
}, (err, response) => {
if(!err)
resolve(response); //response is defined here as the user
else
reject(err);
});
});
};
您似乎将路由文件中的 .then
链接到错误的方法,如果您期望 google.getUser()
到 return 您想要存储在用户中的值应该在该函数调用的末尾链接 .then
。
router.get('/auth/google/callback', (req, res) => {
google.getToken(req.query.code).then( () => {
google.getUser().then(user => {
console.log(user); //undefined - response is NOT defined here
}); //End getUser().then(..)
}); //End getToken.then(..)
}); //End router.get(..)