我试图在我的Node应用程序中找到一种使用promises的方式/最佳方式 我说实话,我不会100%理解承诺,但我通过更多的练习会变得更好。
我目前要做的是在有人登录后:
我遇到的问题是要做第3点,我需要来自第1点的访问令牌以及在第2点中现有或新创建的用户文档传递到第三个函数。
我的功能链如下:
getAccessToken(req)
.then(function(accessToken){
getUserProfile(req, accessToken)
.then(findUser.bind(null, req, res))
.then(...)
});
getAccessToken返回" accessToken"来自Facebook。 getUserProfile从Facebook返回用户。 findUser在Mongodb中查找现有的或创建新的用户文档。
如何返回现有的或新创建的用户对象,并以promise的形式将其传递给accessToken?
答案 0 :(得分:1)
你可以嵌套承诺:
getAccessToken(req)
.then(function(accessToken) {
return getUserProfile(req, accessToken)
.then(findUser.bind(null, req, res))
.then(function(user) {
// use accessToken & user
})
});
或者将解析后的值存储在外部范围中:
var _accessToken;
getAccessToken(req)
.then(function(accessToken) {
_accessToken = accessToken;
return getUserProfile(req, accessToken);
})
.then(findUser.bind(null, req, res))
.then(function(user) {
// use _accessToken & user
});
请记住始终返回嵌套的承诺。