IOS端 当Promise与异步函数一起使用时 特定情况下永远不会settled
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 回复
iOS JavaScriptCore 的 async 函数存在 bug https://bugs.webkit.org/show_bug.cgi?id=161942。
使用 async 函数时请打开开发者工具的【将 JS 编译为 ES6】选项或者自行转换。