Я переписал ваш код, сохранив имена переменных / функций (хотя вы должны использовать более подходящие имена)
async function list_channels(access_token) {
let r = await fetch(`https://slack.com/api/channels.list?token=${access_token}`);
let c = await r.json();
let channels = {}
for (channel of c.channels) {
channels[channel.name] = channel.id;
}
console.log("_______resolve", channels);
return channels;
}
module.exports = {list_channels} // Object with property list_channels
Как видите, вы можете использовать await
вместо использования .then
. Таким образом, вы избежите проблемы callback hell , что сделает ваш код более читабельным и легко редактируемым.
Здесь есть хорошее объяснение: http://callbackhell.com/
Если вы действительно хотите go на обратном вызове в ад , вы можете сделать что-то вроде:
function list_channels(access_token) {
return new Promise(resolve => {
fetch(`https://slack.com/api/channels.list?token=${access_token}`).then((r) => {
r.json().then(c => {
let channels = {}
for (channel of c.channels) {
channels[channel.name] = channel.id
}
console.log("_______resolve", channels)
resolve(channels)
})
})
})
}