3 ms·
I'm under the impression that, in Javascript, > async/await is syntactic sugar on top of the promises and provides a way to handle the asynchronous tasks in a
by silviot 5y ago
I'm under the impression that, in Javascript,
> async/await is syntactic sugar on top of the promises and provides a way to handle the asynchronous tasks in a synchronous manner.
as is stated on this website I just found with one second of googling to support my thesis: https://dmitripavlutin.com/javascript-async-await/ https://dmitripavlutin.com/javascript-async-await/
If that is true, I believe it's incredibly useful syntactic sugar.
- rckrd 5y agoFair enough, there are clearly lots of useful syntactic shortcuts. I'm referring to things like prefix/postfix increment/decrement, object spreading vs. object rest, and ternary expressions. I'd avoid cases where extending the language is done in a non-obvious and ambiguous way.
- dfee 5y agoI love me some spread operators and ternary expressions. …mumbles something about prying those from my cold dead hands.
- skohan 5y agoYeah I think there's a time and a place for ternaries, but when used correctly they're just so concise. Like if you have super long expressions in your ternaries, or you have a bunch of nested/chained ternaries it can be hard to parse, but in a lot of cases it's so nice to get something onto one line instead of needing an if/else
- ensiferum 5y agoYes in c/++ it also allows you to use const. const foo = bar ? 1 : 2; Without ternary you wouldn't be able to use const specifier on foo.
- mjcohen 5y agoLove the ternary operator in gawk. Here's some extreme examples, from a text formatter I wrote over 20 years ago. It is over 6,000 lines of awk, and I haven't used it in over 15 years. Note: These lines should be split, but many of them are not. How do I do that? I read formatdoc, but that did not help. ; # see where text starts; mut = ((substr($0, lf1-length(lf1str), length(lf1str)) != lf1str) \ ? 1 \ : ((substr($0, lf1, 1) == " " ) \ ? (lf1+1) \ : lf1) \ ); # start of string; --------------------------- # return file and line number with optional text; function filineg(ffilename, ffilerec, fltext) { ; # first version always gives a line number, second does not for line 1; return (ffilename \ (ffilerec == "" ? "" : (":" ffilerec)) \ ((fltext == "") \ ? "" \ : (" in \"" fltext "\"") \ )); } ------------------------------------ outstr[2] = (head \ ( (lnum > 1) \ ? (substr(bigsep, 2, lnum-1) " ") \ : (substr(spaces, 1, lnum)) \ ) \ (header2==""?" ":header2) null("output space if null - 5-20-98") \ substr(bigsep, 1, \ ltocout-lhead-lpn-1 \ -(lheader-lheadchop)-lnum \ -((null_loc > 0) \ ? lnullstring \ : 0 \ ) \ ) " " pn); # parens make it line up; ---------------------- function telldepth(deptxt, dep1, dep2) { ; # change depth from dep1 to dep2; ; # good luck figuring this out in a month!; ; # tell how depth changes; recnumprint("{" deptxt " " \ ((dep1=="") \ ? ((dep2=="") \ ? ("leaves depth as is") \ : ("sets depth " dep2)\ ) \ : ("changes depth " dep1 " to " dep2) \ ) " in " filine() "}"); }
- frosted-flakes 5y agoPrepend each line with two spaces to format it like code.
- mastersummoner 5y agoI have to say, I really love the back and forth between you and the various posters in this thread. Lots of good discussion and points being made, and reasonable compromises being agreed on - or even polite disagreement with thoughtful explanations why.