Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save magicly/9658b3dd6e03333fb2dcd49d8bd018ed to your computer and use it in GitHub Desktop.
Save magicly/9658b3dd6e03333fb2dcd49d8bd018ed to your computer and use it in GitHub Desktop.
(base) ➜ my_app cat x.js
setTimeout(()=>{
console.log('timer1')
Promise.resolve().then(function() {
console.log('promise1')
})
})
setTimeout(()=>{
console.log('timer2')
Promise.resolve().then(function() {
console.log('promise2')
})
})
(base) ➜ my_app nvm use v10.11.0
Now using node v10.11.0 (npm v6.4.1)
(base) ➜ my_app node -e 'console.log(process.versions)'
{ http_parser: '2.8.0',
node: '10.11.0',
v8: '6.8.275.32-node.28',
uv: '1.23.0',
zlib: '1.2.11',
ares: '1.14.0',
modules: '64',
nghttp2: '1.33.0',
napi: '3',
openssl: '1.1.0i',
icu: '62.1',
unicode: '11.0',
cldr: '33.1',
tz: '2018e' }
(base) ➜ my_app node x.js
timer1
timer2
promise1
promise2
(base) ➜ my_app nvm use v11
Now using node v11.15.0 (npm v6.7.0)
(base) ➜ my_app node -e 'console.log(process.versions)'
{ node: '11.15.0',
v8: '7.0.276.38-node.19',
uv: '1.27.0',
zlib: '1.2.11',
brotli: '1.0.7',
ares: '1.15.0',
modules: '67',
nghttp2: '1.37.0',
napi: '4',
llhttp: '1.1.1',
http_parser: '2.8.0',
openssl: '1.1.1b',
cldr: '34.0',
icu: '63.1',
tz: '2018e',
unicode: '11.0' }
(base) ➜ my_app node x.js
timer1
promise1
timer2
promise2
(base) ➜ my_app nvm use stable
Now using node v12.3.1 (npm v6.9.0)
(base) ➜ my_app node -e 'console.log(process.versions)'
{
node: '12.3.1',
v8: '7.4.288.27-node.18',
uv: '1.29.1',
zlib: '1.2.11',
brotli: '1.0.7',
ares: '1.15.0',
modules: '72',
nghttp2: '1.38.0',
napi: '4',
llhttp: '1.1.3',
http_parser: '2.8.0',
openssl: '1.1.1b',
cldr: '35.1',
icu: '64.2',
tz: '2019a',
unicode: '12.1'
}
(base) ➜ my_app node x.js
timer1
promise1
timer2
promise2
(base) ➜ my_app ./deno_0.1 --version
deno: 0.1.0
v8: 6.9.297-deno
(base) ➜ my_app ./deno_0.1 x.js
timer2
promise2
timer1
promise1
(base) ➜ my_app ./deno_0.3.11
(base) ➜ my_app ./deno_0.3.11 version
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:345:21
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
(base) ➜ my_app ./deno_0.3.10 version
deno: 0.3.10
v8: 7.4.238
typescript: 3.4.1
(base) ➜ my_app ./deno_0.3.10 x.js
timer1
timer2
promise1
promise2
(base) ➜ my_app ./deno_0.4 version
deno: 0.4.0
v8: 7.6.53
typescript: 3.4.1
(base) ➜ my_app ./deno_0.4 run x.js
timer1
timer2
promise1
promise2
(base) ➜ my_app deno version
deno: 0.6.0
v8: 7.6.53
typescript: 3.4.1
(base) ➜ my_app deno run x.js
timer1
timer2
promise1
promise2
@magicly
Copy link
Author

magicly commented May 26, 2019

macOS High Sierra Version 10.13.6, but I thinks this doesn't matter.

the outs on my Chrome

Google Chrome 74.0.3729.169 (Official Build) (64-bit)
Revision 78e4f8db3ce38f6c26cf56eed7ae9b331fc67ada-refs/branch-heads/3729@{#1013}
OS Mac OS X
JavaScript V8 7.4.288.28

is:

setTimeout(()=>{
    console.log('timer1')

    Promise.resolve().then(function() {
        console.log('promise1')
    })
})

setTimeout(()=>{
    console.log('timer2')

    Promise.resolve().then(function() {
        console.log('promise2')
    })
})
177
timer1
promise1
timer2
promise2

@starkwang
Copy link

This is a inconsistent behavior in Node.js 10. You can refer to nodejs/node#22842.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment