我有一个返回生成器的函数findOrCreateUser
。但是我需要在函数完成时调用回调done
。我该怎么做?
我尝试在生成器上调用next()
,但结果正在等待。
passport.use(new FacebookStrategy({
clientID: fbConfig.appId,
clientSecret: fbConfig.appSecret,
callbackURL: 'http://localhost:' + (process.env.PORT || 3000) + '/auth/facebook/callback'
},
function(token, tokenSecret, profile, done) {
var user = yield userRepository.findOrCreateUser(
profile.id,
profile.name,
'pic');
return user;
})
);
答案 0 :(得分:1)
您可以使用co.wrap()
“将共同生成器函数转换为返回承诺的常规函数”
var co = require('co');
...
var findOrCreateUser = co.wrap(userRepository.findOrCreateUser)
findOrCreateUser(profile.id, profile.name, 'pic').then(function() {
done();
});