Whenever you chain a promise with a then/finally, you're basically letting the runtime look at the callbacks at some arbitrary point in the future, no? So despite being written in a defined order, they will be run in whatever order eventuates.
On Fri, 23 Feb 2018 at 14:24 Raul-Sebastian Mihăilă <raul.miha...@gmail.com> wrote: > The order is deterministic, as specified, I just don't think it's the > right order. I don't have a concrete example with finally, but if I were to > imagine one, say you're writing some tests with jest and you want to make > some checks in the then callbacks. In order for those checks to be executed > in good time, you must return a promise from the test callback. If you have > more promises you have to do a Promise.all in order to make sure that you > wait for all the promises. If you are able to determine the order in which > the promises are settled, you can return the one that is settled the last. > This is perhaps not a convincing example, but if this didn't matter why is > the order specified? > > On Fri, Feb 23, 2018 at 3:59 PM, Viktor Kronvall < > viktor.kronv...@gmail.com> wrote: > >> Since these two Promises aren't chained to one another I wouldn't expect >> any specific >> deterministic ordering between the `console.log` statements. Are you >> suggesting that >> such a deterministic ordering should be imposed by using micro tasks or >> what are you >> proposing here exactly? >> >> In other words, why exactly do you expect the result to always be >> printing 1 before >> printing 2? >> >> 2018年2月23日(金) 19:21 Raul-Sebastian Mihăilă <raul.miha...@gmail.com>: >> >>> I find it weird that >>> >>> ```js >>> Promise.resolve().finally(() => {}).then(() => { console.log(1); }); >>> Promise.resolve().then(() => {}).then(() => { console.log(2); }); >>> ``` >>> >>> prints 2 and then 1. It would have been possible to spec it in such a >>> way that it would have printed 1 and 2. >>> >>> On the other hand >>> >>> ```js >>> Promise.resolve().finally().then(() => { console.log(1); }); >>> Promise.resolve().then().then(() => { console.log(2); }); >>> ``` >>> >>> prints 1 and then 2. >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss