Kevinsillo
Kevinsillo

Reputation: 17

How execute promises in order?

I can't make my code work in order. I need the connection test to come first, and finally the functions are also resolved in order to form a text string that will be sent in a tweet with an NPM package. (This is not my true code, it is a summary example)

I've tried many things and my brain is on fire

// Test DB conection
db.authenticate()
    .then(() => {
        const server = http.createServer(app)
        server.listen(config.port, () => {
            console.log(`http://localhost:${config.port}`)
        })
        reload(app)
})
.catch(err => {
    console.log(`Error: ${err}`)
})

// Functions
resumen.man = (numRoom) => {
    const registries = Registries.findOne({})
    .then((registries) => {
        return registries.name+' is good.'
    })
}
resumen.man1 = (numRoom) => {
    const registries = Registries.findOne({})
    .then((registries) => {
        return registries.name+' is bad.'
    })
}
resumen.man2 = (numRoom) => {
    const registries = Registries.findOne({})
    .then((registries) => {
        return registries.name+' is big.'
    })
}

// Execute resumen.man(1) first and save text in $varStringMultiLine ?
// Execute resumen.man1(1) later and save text in the same $varStringMultiLine ?
// Execute resumen.man2(1) last and save text in the same $varStringMultiLine ? 

sendTweet($varStringMultiLine)

Thanx.

Upvotes: 0

Views: 48

Answers (1)

Fii
Fii

Reputation: 317

As commented by @Barmar and @some, you could chain the promises with .then or use async / await. I would recommend the latter, since .then-chaining will get unwieldy fast.

This is a really good explanation for async / await: https://javascript.info/async-await

Basically, you can use

await db.authenticate();

to halt the code and not execute the next line before the promise is resolved. However, to not freeze the whole execution, this itself needs to be done asynchronously in a promise.

Upvotes: 1

Related Questions