3 ms·
Sorry if I've got this wrong, but wouldn't the first example behave the same way in Javascript as well? The function parent() "awaits" the completion of child()
by pandaxtc 10mo ago
Sorry if I've got this wrong, but wouldn't the first example behave the same way in Javascript as well? The function parent() "awaits" the completion of child(), so it wouldn't be possible to interleave the print statements.
The example from this StackOverflow question might be a better demonstration: https://stackoverflow.com/q/63455683 https://stackoverflow.com/q/63455683
- gildas 10mo agoYou haven't got it wrong, the first example in the article behaves the same in JS, see https://jsfiddle.net/L5w2q1p7/ https://jsfiddle.net/L5w2q1p7/.
- krackers 10mo agoI think in JS it's easier to see because of the correspondence between Promises and async/await. So in your example the behavior is much more obvious if you sort of desugar it as async function parent() { print("parent before"); const p = child(); await p print("parent after"); }
- zokier 10mo agoThe whole article is bit of a mess. Like this thing: > My mutation block contained no awaits. The only awaits happened before acquiring the lock. Therefore: > * The critical section was atomic relative to the event loop. > * No other task could interleave inside the mutation. > * More locks would not increase safety. That is exactly the same as with e.g. JS. I'm sure there are lot of subtle differences in how Python does async vs others, but the article fails to illuminate any of it; neither the framing story nor the examples really clarify anything
- gildas 10mo agoIf we were to compare this to the JS world, it seems Python’s async is closer to Babel-style generator-based coroutines [1] than to JavaScript’s async/await execution model. [1] https://babeljs.io/docs/babel-plugin-transform-async-to-generator https://babeljs.io/docs/babel-plugin-transform-async-to-gene...