js 也可以支持 await 了吗,求教前端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
daijinming
V2EX    Javascript

js 也可以支持 await 了吗,求教前端

  •  
  •   daijinming 2019-09-16 16:48:29 +08:00 9259 次点击
    这是一个创建于 2216 天前的主题,其中的信息可能已经有所发展或是发生改变。

    await 我还是第一次在前端代码中看到 await 关键字 ,前端大虾们讲讲

    42 条回复    2019-10-26 11:00:48 +08:00
    zy445566
        1
    zy445566  
       2019-09-16 16:49:52 +08:00
    早就支持了,谁用谁爽谁知道
    phpcxy
        2
    phpcxy  
       2019-09-16 16:51:08 +08:00
    Sniper416
        3
    Sniper416  
       2019-09-16 16:52:11 +08:00
    是的
    murmur
        4
    murmur  
       2019-09-16 16:53:11 +08:00
    这个 node 都要 8 以上才能用,浏览器肯定是要 babel 的
    LiuJiang
        5
    LiuJiang  
       2019-09-16 16:54:01 +08:00
    这种东西百度一下不好吗?
    daijinming
        6
    daijinming  
    OP
       2019-09-16 16:56:18 +08:00
    @murmur 也就是说直接在浏览器中运行还是不行的是吗
    banxi1988
        7
    banxi1988  
       2019-09-16 16:58:44 +08:00
    想要 await,又想要兼容性 推荐使用 TypeScript
    [Why TypeScript] (3) 有甜度的 TS 之 async/await,数组及对象解构
    https://www.bilibili.com/video/av67096409/
    zhwithsweet
        8
    zhwithsweet  
       2019-09-16 16:59:59 +08:00
    @daijinming #6 Chrome 可以
    randyo
        9
    randyo  
       2019-09-16 17:01:07 +08:00 via Android
    @daijinming 最新版的浏览器可以用,如果你不考虑兼容性的话
    shakaraka
        10
    shakaraka  
    PRO
       2019-09-16 17:05:15 +08:00
    ```
    let fetchData = async function(){
    console.log('start')
    await new Promise(resolve => setTimeout(() => resolve(), 2000))
    console.log('end')
    }

    fetchData()
    ```


    为什么不行?不是已经支持很久了么,难道我 out 了?
    shakaraka
        11
    shakaraka  
    PRO
       2019-09-16 17:06:31 +08:00
    https://caniuse.com/#search=async

    几百年前就支持了
    Phariel
        12
    Phariel  
       2019-09-16 17:08:12 +08:00 via iPhone
    TS 或者 Babel 做个兼容性转译吧
    15651980765
        13
    15651980765  
       2019-09-16 7:41:31 +08:00
    ES7 支持了 用起来比回调爽是真的谁用谁知道
    ochatokori
        14
    ochatokori  
       2019-09-16 17:45:24 +08:00 via Android
    chrome 早就可以了 现在连 class 都支持,碉堡了
    realkenshinji
        15
    realkenshinji  
       2019-09-16 18:13:40 +08:00 via iPhone
    @murmur Node 从 7.6 开始支持的好么
    yinjy
        16
    yinjy  
       2019-09-16 18:34:00 +08:00
    看了眼发帖时间
    Clarke
        17
    Clarke  
       2019-09-16 18:38:26 +08:00 via Android   1
    天翼 3G 太快了!
    xrr2016
        18
    xrr2016  
       2019-09-16 18:40:03 +08:00
    你是 GG 还是 MM ?
    moxiaonai
        19
    moxiaonai  
       2019-09-16 18:45:18 +08:00 via Android
    49 年入国军
    jinliming2
        20
    jinliming2  
       2019-09-16 18:50:19 +08:00 via iPhone
    @murmur
    @daijinming
    浏览器也支持好几年了,Chrome 55 开始支持的现在已经 Chrome 75 了。
    甚至浏览器都支持 # 开头的 class private fields 了,这个连 TypeScript 都还不支持,导致在 VSCode 里还报错……
    tomoya92
        21
    tomoya92  
       2019-09-16 18:53:10 +08:00 via iPhone
    @murmur chrome firefox 不用转也可以用
    murmur
        22
    murmur  
       2019-09-16 19:05:37 +08:00
    @jinliming2
    @tomoya92
    那就不上 babel 直接用么 看到时候出了兼容问题谁负责 反正 caniuse 上国内的数据是 79.34 的支持率
    sunjourney
        23
    sunjourney  
       2019-09-16 19:08:46 +08:00
    什么,大清亡了!
    star7th
        24
    star7th  
       2019-09-16 19:20:45 +08:00
    真的不是几年前的帖子?居然还有人问这个问题
    no1xsyzy
        25
    no1xsyzy  
       2019-09-16 20:04:09 +08:00
    不用 Babel 就好像在说:
    反正自己的用户不足百人, (1-91.13%=) 8.87% 的用户不能用也不过一双手数得过来……

    除了 Electron 其他都上 Typescript target: es5 就行了
    babel 转又不是你手写……
    cyrbuzz
        26
    cyrbuzz  
       2019-09-16 20:18:33 +08:00
    正好有个在写的前端项目,前后端通讯用的异步库,回调`.then()` 和 `await` 两种写法都有(因为是一步步来的...刚开始的教程上只有.then 的异步,后来看了看 Js 异步的资料发现可以用 `await`)。

    还没完全写完,可以看看。

    https://github.com/HuberTRoy/vue-shiyanlou
    kangu
        27
    kangu  
       2019-09-16 20:38:28 +08:00
    谁用谁爽的,都应该没真实掉过坑的,await 写起来舒服,用得多了,光定位 error 估计都要命
    ugu
        28
    ugu  
       2019-09-16 22:20:14 +08:00
    中国申奥成功了
    sagaxu
        29
    sagaxu  
       2019-09-16 23:16:25 +08:00 via Android
    @murmur
    @no1xsyzy 内部项目随便玩,我有个项目只支持最新版和次新版 chrome/firefox,其它版本都禁止使用。
    jinliming2
        30
    jinliming2  
       2019-09-17 00:59:30 +08:00 via iPhone   1
    现在用 IE11 日常正常上网都感觉有点阻力了,看 caniuse 最晚支持 await 的浏览器都是 2017 年 1 月就支持了,要是还使用 2 年前的浏览器并且彻底隔绝所有升级更新的,那么肯定已经不是正常用户了(网络联通状态下,几个月,撑死一年不更新都很难了,光自动更新都能给你更新好几轮)。
    如果做的是大众型网站,肯定是不用考虑这些非正常终端的,因为这些终端设备肯定不是设计用来访问大众网站的。这些终端通常是办公型设备,上班摸鱼都是不允许的。或者是定制的设备比如 ATM 之类,更不可能正常使用的。
    而如果做的网站是面向 2 年前系统的,那么肯定是要单独定制的。

    对于 2 年前的浏览器还做专门兼容,你想兼容它们一辈子吗?为啥不针对 IE5 IE6 做兼容嘞?毕竟还有很多怀旧的人去装 win xp win 98,所以真实统计数据这些浏览器用户不会是 0。只不过真的有必要吗?
    网传某国军队内部还在用 win 98,如果哪天要求你为他们定制一个系统,你那还真是有必要兼容的……

    babel 只不过是现代版本的 jQuery 罢了,让本应该升级的用户有理由停留在旧版本,反正有人帮着做兼容,只不过是拖慢整个互联网发展的进程罢了。不然为啥国外 HTML5 取代 Flash 的速度比国内快那么多,就是 Chrome + FireFox 带着发展的啊!
    murmur
        31
    murmur  
       2019-09-17 08:21:36 +08:00
    @jinliming2 能不能找一个公众网站直接用 await 不 babel 的让我见识一下,规模不用大,a 站这种规模就可以
    w292614191
        32
    w292614191  
       2019-09-17 08:31:27 +08:00
    这个东西不是个语法糖之类的吗?
    就是在里面的回调里面调用另一个函数。

    你写两个 ajax 试试,还不是要在 ajax 的 success 里面 resolve();
    jydeng
        33
    jydeng  
       2019-09-17 09:08:34 +08:00
    要用 babel 转义,为了不加班修兼容性。
    dbpe
        34
    dbpe  
       2019-09-17 09:22:02 +08:00
    什么 java8 发布了?
    Curtion
        35
    Curtion  
       2019-09-17 10:05:02 +08:00
    是语法糖,做的就是 co 库的事情
    chaliely
        36
    chaliely  
       2019-09-17 11:46:05 +08:00
    是的支持,await,必须要放在 async 函数里面
    12tall
        37
    12tall  
       2019-09-17 12:19:57 +08:00
    es2017 的特性吧,但是主流不还是 es2015 么
    zephyru
        38
    zephyru  
       2019-09-17 15:47:31 +08:00
    @murmur 我不是想抬杠..不过 github 好像没做兼容直接在用 await....当然你觉得不算公众网站那就当我没说..
    murmur
        39
    murmur  
       2019-09-17 16:17:29 +08:00
    @zephyru github 在 chrome 下的确使用了 es6 语法,但是在 IE 下会自动加载另外一套代码保证基本的操作正常
    no1xsyzy
        40
    no1xsyzy  
       2019-09-17 19:37:00 +08:00
    @zephyru 论 Github 的 PE,是我见过并能想象的天花板。
    NoScript 的日子里(有类 Spectre 的 demo 还没修,而我还用着 iu 的日子里),只有 Github,我根本没有发现我没开 JS 运行权限。
    导致我有种拿网景浏览器都能正常使用 Github 的感觉。
    flowfire
        42
    flowfire  
       2019-10-26 11:00:48 +08:00
    chrome 从 55 版本就支持了
    Firefox 从 52 版本就支持了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6131 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 03:11 PVG 11:11 LAX 20:11 JFK 23:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86