使用v3編譯打包后Promise不支持finally方法

自己閑來無事使用uniapp編寫app,發(fā)現(xiàn)在


image.png

中有2個選項,分別是v3編譯器和fast啟動模式。

然后自己就勾選了,編譯后在chrome瀏覽器中運行沒有問題,就嘗試打包到安卓和ios下,上真機后發(fā)現(xiàn)網(wǎng)絡(luò)請求一直轉(zhuǎn)圈,自己就很詫異。

由于我項目中網(wǎng)絡(luò)請求都使用了Promise異步方式。而且所有的請求完畢都使用的finally方法。類似如下:

onClick() {
    setTimeout(() => {
        let that = this;
        let promise, instance;
        that.context = "";
        promise = new Promise((resolve, reject) => {
            instance = uni.request({
                url: 'http://localhost:8008/api/goods-detail', //僅為示例,并非真實接口地址。
                data: {
                    sku_id: "1"
                },
                header: {
                    "Content-Type": "application/json",
                    "Authorization": "",
                    "Accept": "application/vnd.app.v1+json",
                },
                method:"POST",
                success: (res) => {
                    res.data = that.toJSON(res.data);
                    resolve(res);
                },
                fail: reject
            });
        });
        promise.then(r => {
            console.info(r)
            that.context += "resolve:成功得調(diào)用";
        });
        promise.catch(e => {
            console.info(e)
            that.context += "reject:異常失敗調(diào)用"
        });
        promise.finally(f => {
            that.context += ";finally調(diào)用"
        });
    }, 1000);
}

使用v3打包后在調(diào)試中發(fā)現(xiàn)會報如下錯誤信息:

[JS Framework] Failed to execute the callback function:
TypeError: promise.finally is not a function. (In 'promise.finally(function (f) {

但是不使用v3編譯則沒問題,從而推斷出v3編譯不支持該特性。所以我就在main.js文件中加入如下代碼解決該問題:

// 用于fixed 使用v3編譯不支持finally回調(diào)
if (Promise.finally === undefined) {
    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 })
      );
    };
}

重新編譯,打包OK

另外使用v3編譯后還有一些樣式上的變化。所以還需要一些調(diào)試和適配。
也有可能是我寫的練手項目的樣式不夠牢固把つ﹏?。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計架構(gòu)和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 3,158評論 1 4
  • 你不知道JS:異步 第三章:Promises 接上篇3-1 錯誤處理(Error Handling) 在異步編程中...
    purple_force閱讀 1,502評論 0 2
  • 原文: 老人消瘦而憔悴,脖頸上有些很深的皺紋。腮幫上有些褐斑,那是太陽在熱帶海面上反射的光線所引起的良性皮膚癌...
    張南笛閱讀 291評論 2 2
  • redis 相關(guān)的可執(zhí)行文件 redis-server Redis服務(wù)器 redis-cli ...
    BlockGeeks閱讀 1,098評論 0 51
  • 使用Dubbo構(gòu)建一個RPC服務(wù) 準備工作 安裝Zookeepr并啟動 創(chuàng)建一個interface 新建一個Mod...
    shiguangfeixu閱讀 410評論 0 0

友情鏈接更多精彩內(nèi)容