Я хотел бы знать, если я делаю что-нибудь ужасное с этим примером кода:Доступ к внешним переменным в Promise цепи
something.on('register', function(user) {
client.setAsync(config.id, user.id) // From a package (I can't set the return value)
.then(function(){
return user; // is this OK?
})
.then(handleNewUser)
.then(getSomeStuff)
.catch(function(err) {
console.error("Promise chain error: ", err);
});
});
Будут ли какие-либо вопросы сферы применения? (условия гонки, где пользователь не так, как я думаю?)
Могу ли я передать пользователю более элегантный способ?
'client.setAsync (config.id, user.id) .return (user)' - bluebird. –
Вы также можете сделать '.then (() => handleNewUser (user))' или '.then (handleNewUser.bind (null, user))' make 'null', любой контекст' handleNewUser' должен работать правильно. Тем не менее, поскольку вы используете Bluebird, комментарий Беньямина - лучший подход. – sdgluck