Skip to content

Commit 36f9069

Browse files
committed
[update] http/join_subrequests example using async/await
1 parent d69569c commit 36f9069

File tree

2 files changed

+23
-35
lines changed

2 files changed

+23
-35
lines changed

‎README.rst

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -866,29 +866,23 @@ example.js:
866866

867867
.. code-block:: js
868868
869-
function join(r) {
870-
join_subrequests(r, ['/foo', '/bar']);
871-
}
872-
873-
function join_subrequests(r, subs) {
874-
var parts = [];
869+
async function join(r) {
870+
join_subrequests(r, ['/foo', '/bar']);
871+
}
875872
876-
function done(reply) {
877-
parts.push({ uri: reply.uri,
878-
code: reply.status,
879-
body: reply.responseBody });
873+
async function join_subrequests(r, subs) {
874+
let results = await Promise.all(subs.map(uri => r.subrequest(uri)));
880875
881-
if (parts.length == subs.length) {
882-
r.return(200, JSON.stringify(parts));
883-
}
884-
}
876+
let response = results.map(reply => ({
877+
uri: reply.uri,
878+
code: reply.status,
879+
body: reply.responseBody,
880+
}));
885881
886-
for (var i in subs) {
887-
r.subrequest(subs[i], done);
888-
}
889-
}
882+
r.return(200, JSON.stringify(response));
883+
}
890884
891-
export default {join}
885+
export default {join};
892886
893887
Checking:
894888

‎njs/http/join_subrequests.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
1-
function join(r) {
1+
async function join(r) {
22
join_subrequests(r, ['/foo', '/bar']);
33
}
44

5-
function join_subrequests(r, subs) {
6-
var parts = [];
5+
async function join_subrequests(r, subs) {
6+
let results = await Promise.all(subs.map(uri => r.subrequest(uri)));
77

8-
function done(reply) {
9-
parts.push({ uri: reply.uri,
10-
code: reply.status,
11-
body: reply.responseBody });
8+
let response = results.map(reply => ({
9+
uri: reply.uri,
10+
code: reply.status,
11+
body: reply.responseBody,
12+
}));
1213

13-
if (parts.length == subs.length) {
14-
r.return(200, JSON.stringify(parts));
15-
}
16-
}
17-
18-
for (var i in subs) {
19-
r.subrequest(subs[i], done);
20-
}
14+
r.return(200, JSON.stringify(response));
2115
}
2216

23-
export default {join}
17+
export default {join};

0 commit comments

Comments
 (0)