IIFE和then一起使用的问题

实例代码 我列出了所有的情况:

问题是为什么 then 写法写在 IIFE 前面会报错,写在后面可以,而且两种写法单独使用也都是可以的
const { baseUrl } = require('./_baseUrl')
const fetch = require('node-fetch')
const demo = async () => {
    const url = baseUrl + '/base'
    const res = await fetch(url)
    const resData = await res.json()
    return await resData.data.name
}

// 报错的写法

demo()
.then(name => {
    console.log(name)
})

(async () => {
    const name = await demo()
    console.log(name)
})()

// 成功的写法

(async () => {
    const name = await demo()
    console.log(name)
})()

demo()
.then(name => {
    console.log(name)
})

// 单独使用都可以

(async () => {
    const name = await demo()
    console.log(name)
})()

// 单独使用都可以

demo()
.then(name => {
    console.log(name)
})
阅读 1.8k
1 个回答
demo()
.then(name => {
    console.log(name)
});

(async () => {
    const name = await demo()
    console.log(name)
})()

加一个分号就好了,那个地方js执行的时候把前后两部分当做函数执行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题