Typography

活版印字


  • Home
  • Archive
  • Categories
  • Tags
  •  

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo

如何時候該用 Promise?

Posted at 2016-05-10 promise 

Promise

使用時機

在寫 async function 時,最容易搞錯的就是執行順序,然而在寫 async function 時,可以用 await 去解掉層層的巢狀callback 結構,但如果 async 內使用到 sync function,那該怎麼做?

實作方式

在 sync function 包一個 Promise

TokenAuth.js

1
2
3
4
5
6
7
8
9
10
module.exports.getUser = (token) => {
return new Promise((resolve, reject) => {
// 這個是一個 sync function
TokenAuth.verifyToken(token, async(err, decodedToken) => {
if (err) reject(err);
let user = await db.User.findById(decodedToken.sub);
resolve(user);
});
});
}

CartAPIController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Promise from "bluebird";

module.exports = {
get: async(req, res) => {
try {
let promise = TokenAuth.getUser(req);
let loginUser = await promise.then();
let result = await CartService.getCartInfo(loginUser);
return res.ok(result);
} catch (e) {
return res.serverError(e);
}
}

};

Share 

 Previous post: 線上 JSON 產生器 Next post: 如何開始使用 Story Points? 

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo