async/await nodejs funciontality
I have following code snippet with async/await
.
async function test1 () {
setTimeout(() => {
console.log("1")
}, 2000);
}
async function test2 () {
setTimeout(() => {
console.log("2")
}, 1000);
}
async function test3 () {
setTimeout(() => {
console.log("3")
}, 1500);
}
async function test4 () {console.log("4")}
async function run () {
await test1()
await test2()
await test3()
await test4()
}
run()
When I explore above code snippet, I am expecting output as 1, 2, 3, 4. But I got 4, 2, 3, 1. Am I missed anything here?
Node Version v10.13.0
node.js async-await
add a comment |
I have following code snippet with async/await
.
async function test1 () {
setTimeout(() => {
console.log("1")
}, 2000);
}
async function test2 () {
setTimeout(() => {
console.log("2")
}, 1000);
}
async function test3 () {
setTimeout(() => {
console.log("3")
}, 1500);
}
async function test4 () {console.log("4")}
async function run () {
await test1()
await test2()
await test3()
await test4()
}
run()
When I explore above code snippet, I am expecting output as 1, 2, 3, 4. But I got 4, 2, 3, 1. Am I missed anything here?
Node Version v10.13.0
node.js async-await
2
You've missed the fact that you aren't doing anything awaitable, in any of thoseasync
functions, so they'll execute in the order of their timeouts (which looks correct).
– James
Nov 22 '18 at 13:05
add a comment |
I have following code snippet with async/await
.
async function test1 () {
setTimeout(() => {
console.log("1")
}, 2000);
}
async function test2 () {
setTimeout(() => {
console.log("2")
}, 1000);
}
async function test3 () {
setTimeout(() => {
console.log("3")
}, 1500);
}
async function test4 () {console.log("4")}
async function run () {
await test1()
await test2()
await test3()
await test4()
}
run()
When I explore above code snippet, I am expecting output as 1, 2, 3, 4. But I got 4, 2, 3, 1. Am I missed anything here?
Node Version v10.13.0
node.js async-await
I have following code snippet with async/await
.
async function test1 () {
setTimeout(() => {
console.log("1")
}, 2000);
}
async function test2 () {
setTimeout(() => {
console.log("2")
}, 1000);
}
async function test3 () {
setTimeout(() => {
console.log("3")
}, 1500);
}
async function test4 () {console.log("4")}
async function run () {
await test1()
await test2()
await test3()
await test4()
}
run()
When I explore above code snippet, I am expecting output as 1, 2, 3, 4. But I got 4, 2, 3, 1. Am I missed anything here?
Node Version v10.13.0
node.js async-await
node.js async-await
asked Nov 22 '18 at 13:02
Syed Habib MSyed Habib M
1,2521426
1,2521426
2
You've missed the fact that you aren't doing anything awaitable, in any of thoseasync
functions, so they'll execute in the order of their timeouts (which looks correct).
– James
Nov 22 '18 at 13:05
add a comment |
2
You've missed the fact that you aren't doing anything awaitable, in any of thoseasync
functions, so they'll execute in the order of their timeouts (which looks correct).
– James
Nov 22 '18 at 13:05
2
2
You've missed the fact that you aren't doing anything awaitable, in any of those
async
functions, so they'll execute in the order of their timeouts (which looks correct).– James
Nov 22 '18 at 13:05
You've missed the fact that you aren't doing anything awaitable, in any of those
async
functions, so they'll execute in the order of their timeouts (which looks correct).– James
Nov 22 '18 at 13:05
add a comment |
1 Answer
1
active
oldest
votes
await
ing test1
, etc. is the same as await
ing setTimeout(...)
directly. setTimeout
is not promise-based and isn't taken into account in promise chain.
await test1()
, etc. result in one-tick delays, run()
promise resolves instantly.
In order for the code to work as intended, it should be:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
, etc. don't need to be async
because they cannot benefit from a promise created by async
function.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431642%2fasync-await-nodejs-funciontality%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
await
ing test1
, etc. is the same as await
ing setTimeout(...)
directly. setTimeout
is not promise-based and isn't taken into account in promise chain.
await test1()
, etc. result in one-tick delays, run()
promise resolves instantly.
In order for the code to work as intended, it should be:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
, etc. don't need to be async
because they cannot benefit from a promise created by async
function.
add a comment |
await
ing test1
, etc. is the same as await
ing setTimeout(...)
directly. setTimeout
is not promise-based and isn't taken into account in promise chain.
await test1()
, etc. result in one-tick delays, run()
promise resolves instantly.
In order for the code to work as intended, it should be:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
, etc. don't need to be async
because they cannot benefit from a promise created by async
function.
add a comment |
await
ing test1
, etc. is the same as await
ing setTimeout(...)
directly. setTimeout
is not promise-based and isn't taken into account in promise chain.
await test1()
, etc. result in one-tick delays, run()
promise resolves instantly.
In order for the code to work as intended, it should be:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
, etc. don't need to be async
because they cannot benefit from a promise created by async
function.
await
ing test1
, etc. is the same as await
ing setTimeout(...)
directly. setTimeout
is not promise-based and isn't taken into account in promise chain.
await test1()
, etc. result in one-tick delays, run()
promise resolves instantly.
In order for the code to work as intended, it should be:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
, etc. don't need to be async
because they cannot benefit from a promise created by async
function.
answered Nov 22 '18 at 13:09
estusestus
74.8k22109227
74.8k22109227
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431642%2fasync-await-nodejs-funciontality%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
You've missed the fact that you aren't doing anything awaitable, in any of those
async
functions, so they'll execute in the order of their timeouts (which looks correct).– James
Nov 22 '18 at 13:05