Skip to content

Commit b088d30

Browse files
MaledongJacksonTian
authored andcommitted
Refactor and optimize list() (#139)
1) Use `ES6` syntax to rewrite `readMessages`/`unreadMessages` instead of using index for a whole array. 2) Use Promise.all to wrap the mapping from read/unread messages and do Promise.all to await to save time.
1 parent e634a68 commit b088d30

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

app/controller/api/message.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,18 @@ class MessageController extends Controller {
3737
const userId = ctx.request.user._id;
3838
const msgService = ctx.service.message;
3939
const mdrender = ctx.request.query.mdrender !== 'false';
40-
const messages = await Promise.all([
40+
41+
// Use ES6 `deconstructor` to analyse the read/unread messages
42+
const [ readMessages, unreadMessages ] = await Promise.all([
4143
msgService.getReadMessagesByUserId(userId),
4244
msgService.getUnreadMessagesByUserId(userId),
4345
]);
4446

45-
let hasReadMessages = await Promise.all(messages[0].map(async message => await msgService.getMessageRelations(message)));
46-
let hasUnReadMessages = await Promise.all(messages[1].map(async message => await msgService.getMessageRelations(message)));
47+
// Use `Promise.all` to wrap all the sub promises together into a whole Promise<any[]>
48+
const readMessagesPromises = Promise.all(readMessages.map(message => msgService.getMessageRelations(message)));
49+
const unreadMessagesPromises = Promise.all(unreadMessages.map(message => msgService.getMessageRelations(message)));
50+
51+
let [ hasReadMessages, hasUnReadMessages ] = await Promise.all([ readMessagesPromises, unreadMessagesPromises ]);
4752

4853
const formatMessage = message => {
4954
return {

0 commit comments

Comments
 (0)