ich Probleme, bin einige Code Refactoring Promises zu verwenden, diese Verschachtelung Rückrufe zu vermeiden, wird der Code, den ich zu refactor bin versucht, sieht wie folgt aus:Wie Ergebnisse der verschachtelten Versprechen behandeln
bot.api.users.list({}, function(err, teamData) {
if(err) {
bot.botkit.log("Couldn't fetch team data from API", err);
return;
}
var members = teamData.members;
var msgSender = _.find(members, function(member) { return member.id == message.user });
parsedUserIds(userIdsGroup).forEach(function(id) {
var msgReceiver = _.find(members, function(member) { return member.id == id });
bot.startPrivateConversation({ user: id }, function(err, conversation) {
if(err) {
bot.botkit.log("Couldn't initiate private conversation", err);
return;
}
var message = format("Hey {to}, {from} just requested a Pull Request Review, here's the link: {githubLink}, please go and check it out!",
{ to: msgReceiver.name,
from: msgSender.name,
githubLink: githubRepoUrl });
conversation.say(message);
});
});
Ich bin Verwenden von Botkit mit dem slack api und bluebird for Promises.
Der Teil des Codes, wo ich am meisten Schwierigkeiten habe, ist mit der Schleife, die durch jede ID iteriert und eine private Konversation mit einem Benutzer startet; was ich wie folgt aussieht habe versucht:
var usersList = Promise.promisify(bot.api.users.list);
var privateConversation = Promise.promisify(bot.startPrivateConversation);
usersList({}).then(function(data) {
var members = data.members;
var msgSender = findMember(members, message.user);
return Promise.all(parsedUserIds(userIdsGroup).map(function(id) {
var msgReceiver = findMember(members, id);
return privateConversation({ user: id }).then(function(conversation) {
var message = format("Hey {to}, {from} just requested a Pull Request Review, here's the link: {githubLink}, please go and check it out!",
{ to: msgReceiver.name,
from: msgSender.name,
githubLink: githubRepoUrl });
conversation.say(message);
});
}));
}).catch(function(err){
bot.botkit.log(err);
});
Von dem, was ich verstehe, Promise.all mir ein Ergebnis aus einer Reihe von Versprechungen ... aber erhalten kann, habe ich einen Fehler von diesem Code bin immer : TypeError: this.task.bot.reply is not a function
was mir überhaupt nicht hilft.
Wie kann ich Versprechungen nutzen, um das zu erreichen, was ich versuche?