iT邦幫忙

2

[nodejs] 沒有query完直接send資料回客戶端

  • 分享至 

  • xImage

如題
Nodejs

Router.get("/:id", (req, res) => {
    mysqldb.query(....) //1.
    res.json(data) //會直接執行這邊,才會回去執行第一行
})

有用asyc和await處理,但還是沒有用,
懇請各位大大解答,謝謝

Luis-Chen iT邦新手 4 級 ‧ 2020-06-03 20:53:29 檢舉
Promise 阿
fillano iT邦超人 1 級 ‧ 2020-06-04 09:34:02 檢舉
不知道mysql模組現在支援怎樣操作,不過:
1. 如果要用callback,那就加上callback
2. 如果要用Promise,那要加上then
3. 如果要用async/await,那要加上await,還要回傳結果
lkjmn1234 iT邦新手 5 級 ‧ 2020-06-04 17:34:14 檢舉
有用asyc和await處理,但又不貼完整的code
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
dragonH
iT邦超人 5 級 ‧ 2020-06-03 22:47:11
最佳解答

我知道的 promise 應該長這樣

const Express  = require('express');

const app = Express();
const router = Express.Router();
const port = process.env.PORT || 3000;

const sleep = (time) => {
    return new Promise((resolve, reject) => {
        setTimeout(() => resolve(true), time);
    });
}

router.get('/', async (req, res) => {
    await sleep(3000);
    res.status(200).send({ message: 'Echo after 3 second' });
});

app.use(router);

app.listen(port, () => {
    console.log(`Server is running on ${port}`);
});

我要發表回答

立即登入回答