收藏
回答

IOS下 Promise.finally 是undefined 的

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS 最新 Iphone X 最新

使用了一个方法:

Promise.all(setTagList)
                .catch(err => {
                    console.log('出现了错误诶!!!! => ', err)
                })
                .finally(() => {
                const msgBody = {
                    event: {
                        event_type: 'ENTER'
                    }
                }
 
                console.log('come into finally')
 
                that.sendMsg(msgBody, 'enter')
            })

这个代码在安卓机器以及开发工具上都表现良好,在线上环境发现IOS的机器稳定出现问题,经过排查发现:
表现行为不一致,要么安卓和IOS都不可行,要么都可行

回答关注问题邀请回答
收藏

3 个回答

  • 青丘血狐
    青丘血狐
    2021-11-05

    真机在ios<=12 iPhoneX确实是没有finally的

    2021-11-05
    有用
    回复
  • 幻生
    幻生
    2020-09-11

    ios上promise原型链上没有finally,我也踩到这个坑了,需要打个polyfill补丁

    2020-09-11
    有用
    回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-10-09

    Promise.prototype.finally = function (callback) {

        let P = this.constructor;

        return this.then(

            value => P.resolve(callback()).then(() => value),

            reason => P.resolve(callback()).then(() => { throw reason })

        );

    };


    Promise.all(setTagList).then(res=>{}, fail=>{}).finally(()=>{})


    catch的话,放到new Promise()里吧

    new Promise(function (resolve, reject) {

        try{

            ****

            resolve(b);

        } catch (e) {

            reject(e);

        }

    })



    2019-10-09
    有用
    回复 4
登录 后发表内容
问题标签