IOS端 当Promise与异步函数一起使用时 特定情况下永远不会settled

发布于 7 年前作者 renguiying5458 次浏览最后编辑 7 年前来自 ask
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 回复
liuyong
liuyong1 楼4 年前

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

min58
min582 楼4 年前

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

juanlei
juanlei3 楼4 年前

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

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