快应用—退至后台暂停调用快应用的接口

很多快应用的接口不允许后台调用,当遇到用户把快应用退到后台,代码还在执行,正好执行到不允许后台调用的接口就报错。

创建tools.js文件

我们先写个工具文件,用于存储辅助函数

var appShow = true
var startReq = []
// 把需要等待app回到前台的请求的放入数组里
async function awaitAppShow(){
    if(appShow){
        return true
    }else{
        return new Promise((resolve, reject) => {
            startReq.push(() => {
                resolve(true)
            })
        })
    }
}
// 当app回到前台的时候就行执行等待数组
function appShowContinue() {
    for (let i = 0; i < startReq.length; i++) {
        startReq[i]()
    }
    startReq = []
}
export default {
    awaitAppShow,
    appShowContinue,
    appShow,
}

使用 global.js创建全局函数

function getGlobalRef() {
    return Object.getPrototypeOf(global) || global
}
  
const quickappGlobal = getGlobalRef()
  
/**
 * 设置全局(被APP与Page共享)数据;
 * @param key {string}
 * @param val {*}
 */
function setGlobalData(key, val) {
    quickappGlobal[key] = val
}
  
/**
 * 获取全局(被APP与Page共享)数据;
 * @param key {string}
 * @return {*}
 */
function getGlobalData(key) {
    return quickappGlobal[key]
}

setGlobalData('setGlobalData', setGlobalData)
setGlobalData('getGlobalData', getGlobalData)

// 引入工具文件并定义全局
import tools from "./utils/tools.js"
setGlobalData('$T', tools);

在app.ux里引入

import "./helper/global.js"
export default {
  onCreate() {
    console.log("sdjioadjioasdsdsa",$T.appShow)
  },
  onShow(){
    $T.appShow = true
    $T.appShowContinue()
  },
  onHide() {
    $T.appShow = false
  },
};

使用

由于我们定义了全局函数,所以直接调用await $T.awaitAppShow()即可,例如:

async function preloadAd(){
    await $T.awaitAppShow()
    require('@service.ad').preloadAd({
        ...adParams,
        success: (data) => {
            console.log(data.adList)
            prompt.showToast({
                message: `success! data=${JSON.stringify(data)}`
            })
        }, 
        fail: (data, code) => {
            console.log(data, code)
            prompt.showToast({
                message: `fail! data=${JSON.stringify(data)}, code=${code}`
            })
        }
    })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值