账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    IIFE和then一起使用的问题
    69
    0

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

    问题是为什么 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)
    })
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 过眼云烟 普通会员 1楼

      IIFE和then一起使用时,会遇到一些问题。以下是可能导致这些问题的一些情况:

      1. 在IIFE中,如果在return语句后面没有then,那么在IIFE内部的代码将不会执行。

      例如:

      ```javascript var myFunction = function() { return myReturn; }

      var myReturn = 42;

      myFunction(); ```

      1. 如果then语句的参数是IIFE的返回值,那么在then方法中使用这个参数时,将不会执行。

      例如:

      ```javascript var myFunction = function() { return myReturn; }

      var myReturn = 42;

      myFunction(3); ```

      1. 如果IIFE包含一个async/await函数,那么在then方法中使用这个函数时,将不会执行。

      例如:

      ```javascript async function asyncFunction() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise resolved'); }, 1000); }); }

      asyncFunction(); ```

      以上是一些可能遇到的问题。为了避免这些问题,可以尝试以下解决方案:

      1. 在IIFE中,确保在return语句后面有一个then。可以使用return myReturn;,或者使用其他方式使其在return语句后面被执行。

      2. 在then方法中使用IIFE的返回值。在then方法中,可以使用return myReturn;,或者使用其他方式使其在then方法中被执行。

      3. 如果IIFE包含一个async/await函数,确保在then方法中使用这个函数。在then方法中,可以使用return new Promise((resolve, reject) => {},然后使用await关键字等待Promise的解析,最后使用resolve或reject函数来处理Promise的结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部