IOS端 当Promise与异步函数一起使用时 特定情况下永远不会settled
发布于 5 年前 作者 renguiying 5277 次浏览 来自 问答
const app = getApp()

function wait(delay{
  return new Promise(resolve => setTimeout(resolve, delay))
}

const requestAuth = async() =>  {
  return request(false)
}

async function request(auth = true{
    await Promise.resolve()
    await wait(300);
    if (auth) {
      await requestAuth()
    }
    return true
}

Page({
  onLoad() {
        request().then(
          () => {
            //在ios既不会执行到这里 也不会报错
            wx.showModal({
              title'在ios上始终无法出现的modal',
            })
          },
          console.error
        )
  },
})
3 回复

你return一个true,true身上有.then方法吗?

我真服了,昨天因为找这个bug 我10点才下班

iOS JavaScriptCore 的 async 函数存在 bug https://bugs.webkit.org/show_bug.cgi?id=161942

使用 async 函数时请打开开发者工具的【将 JS 编译为 ES6】选项或者自行转换。

回到顶部