V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjsxwc
V2EX  ›  程序员

为什么这个 js 函数是个异步的,但能够在不是异步的地方直接调用?

  •  
  •   zjsxwc ·
    zjsxwc · 2022-07-01 14:15:31 +08:00 · 1474 次点击
    这是一个创建于 874 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图 https://i.imgur.com/q7orBLM.png

    为什么这个 initApp 是个异步的,为什么能够在不是异步的地方直接调用?

    为什么不写作 initApp().then(...)的样子?

    Muninn
        1
    Muninn  
       2022-07-01 14:22:25 +08:00
    then 了,然后又能怎样。
    zjsxwc
        2
    zjsxwc  
    OP
       2022-07-01 14:43:07 +08:00
    已解决


    就是没有用处,这个 promise 不 then 调用下,相当于没执行,而这个代码是 uniapp 自带的模板代码,脱裤子放屁啊
    @Muninn
    codehz
        3
    codehz  
       2022-07-01 15:09:57 +08:00   ❤️ 1
    谁说没 then 等于没执行的(
    正常 promise 是创建出来就开始跑的
    没写 then 或者放 async 里只是你拿不到结果(也收不到错误)
    但是并不是所有情况都需要结果啊)
    duan602728596
        4
    duan602728596  
       2022-07-01 16:56:18 +08:00
    sqlNice
        5
    sqlNice  
       2022-07-01 17:45:51 +08:00
    如果 initApp 返回的结果你不需要,那么直接 initApp() 就行了。如果需要后续返回结果就 then 或者 await 接收一下
    ysc3839
        6
    ysc3839  
       2022-07-01 18:52:57 +08:00 via Android
    可以理解成,你不用 then 或者 await ,就是不设置回调函数,让它跑就不管了
    aaronlam
        7
    aaronlam  
       2022-07-01 19:57:36 +08:00
    initApp 还是要调用的,看名字应该是做一些初始化的操作。而方法是异步的只是为了不阻塞后续代码运行,如果其后续代码需要依赖他运行完再运行或者依赖其返回结果,那当然就需要用 then 或者 await 。
    Sunzehui
        8
    Sunzehui  
       2022-07-02 11:16:59 +08:00
    then 仅仅是注册回调,并不是执行 executor
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 11:53 · PVG 19:53 · LAX 03:53 · JFK 06:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.