6***@qq.com
6***@qq.com
  • 发布:2020-01-16 18:02
  • 更新:2020-03-23 11:52
  • 阅读:1491

【报Bug】v3模式promise无法使用finally方法

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]
1、 用HX 2.5.1 新建一个hello的应用
2、在onLoad中写一个promise

       onLoad() {  

        var promise = new Promise(function(resolve, reject) {  
            resolve();  
        });  

        promise.then(function() {  
            console.log('完成调用');  
        }).catch((err) => {  
            console.log('出现错误:' + err);  
        }).finally(function() {  
            console.log('finally');  
        });  

    }  

[结果]

仅调用了then,无法调用finally。
控制台输出一个
TypeError: undefined is not a function (near '...}).finally(function () {...')

[期望]

调用then,然后调用finally

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

HX 2.5.1

[IDE版本号]

HX 2.5.1
[windows版本号]

win10

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

app

[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

HBuilderX

[编译模式是老模板模式还是新的自定义组件模式?]

V3模式

App运行环境说明

[Android版本号]
android10

[iOS版本号]

[手机型号]

mate 20,emui10,

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2020-01-16 18:02 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_GSQ

DCloud_UNI_GSQ

HBuilderX 2.6.6 alpha 已经修复

  • h***@163.com

    请问 修复了吗 2.6.11 finally 也是不可用

    2020-04-14 10:30

  • DCloud_UNI_GSQ

    回复 h***@163.com: 说具体点

    2020-04-14 11:09

  • h***@163.com

    回复 DCloud_UNI_GSQ: onLoad() {


        var promise = new Promise(function(resolve, reject) {    
    resolve();
    });

    promise.then(function() {
    console.log('完成调用');
    }).catch((err) => {
    console.log('出现错误:' + err);
    }).finally(function() {
    console.log('finally');
    });

    }

    V3 模式下不可用 报错:TypeError: undefined is not a function (near '...}).finally(function () {...')

    2020-04-14 11:13

  • h***@163.com

    我的 hbuilder 版本号 为 2.6.11

    2020-04-14 11:15

  • h***@163.com

    回复 DCloud_UNI_GS回复 DCloud_UNI_GSQ: 是 Nvue 文件 不支持吗?

    2020-04-14 11:18

  • DCloud_UNI_GSQ

    回复 h***@163.com: 手机型号,手机系统版本说一下

    2020-04-14 11:26

  • h***@163.com

    回复 DCloud_UNI_GSQ: 手机型号:华为P9

    android:8.0.0

    2020-04-14 11:29

d***@qq.com

d***@qq.com

同样问啊

DCloud_UNI_FXY

DCloud_UNI_FXY

你测试的非v3模式,可以正常使用吗?我怎么测试的也不行

  • 6***@qq.com (作者)

    可以的,我这里测试自定组件模式finally是可以用的。以前的非组件模式,现在的自定义组件模式,finally方法一直都是可以用的。到了v3的时候,不知是不是把这个代码给去掉了,还是不生效。原来的代码文件promise.js,是有这样的定义的。 if (!Promise.prototype.finally) {...

    2020-03-16 12:10

  • DCloud_UNI_FXY

    回复 6***@qq.com: 大概知道原因了,以前可以,是因为你先调用过uni的相关API后,就会自动补充finally的polyfill了,以你这个demo来说,不管是哪个模式,都是有问题的,除非先调用一下uni的api,比如uni.getSystemInfo之类的

    2020-03-16 12:25

  • 6***@qq.com (作者)

    回复 DCloud_UNI_FXY: 好的谢谢。我在实际项目中调用finally是无效的,按道理肯定调用过uni的api了。实际在V3下finally无法调用,所以写了一个demo。可能有bug,您帮忙处理下。感谢~

    2020-03-16 12:29

  • d***@qq.com

    回复 DCloud_UNI_FXY: 那现在是该怎么解决这个问题? 不用finally还是你们晚新会升级这个?

    2020-03-17 13:57

  • DCloud_UNI_FXY

    回复 d***@qq.com: 会升级支持finally

    2020-03-17 14:08

  • d***@qq.com

    回复 DCloud_UNI_FXY: 感谢.这个很有用,

    2020-03-17 23:50

  • 8***@qq.com

    回复 DCloud_UNI_FXY: 请问修复了吗?最新版hbx 2.6.5.20200314还是报错 finally is undefined

    2020-03-21 13:54

该问题目前已经被锁定, 无法添加新回复