我如何等待收益率?
How do I wait for a yield?
我有一个 findOrCreateUser
函数 returns 生成器。但是我需要在函数完成时调用回调 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;
})
);
您可以使用 co.wrap()
其中 "converts a co-generator-function into a regular function that returns a promise"
var co = require('co');
...
var findOrCreateUser = co.wrap(userRepository.findOrCreateUser)
findOrCreateUser(profile.id, profile.name, 'pic').then(function() {
done();
});
我有一个 findOrCreateUser
函数 returns 生成器。但是我需要在函数完成时调用回调 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;
})
);
您可以使用 co.wrap()
其中 "converts a co-generator-function into a regular function that returns a promise"
var co = require('co');
...
var findOrCreateUser = co.wrap(userRepository.findOrCreateUser)
findOrCreateUser(profile.id, profile.name, 'pic').then(function() {
done();
});