uni-app 原生开发打开调试代码执行 不开调试有代码没执行

uni-app 原生开发打开调试代码执行 不开调试有代码没执行

开发环境 版本号 项目创建方式
HbuilderX 2.9.3 HBuilderX

bug描述:

使用苹果手机测试时,在没有打开调试的时候有段代码没执行,也没报错;在打开调试的时候一切正常。请问这个什么原因?

示例代码:

/ajax方法:
/
// 请求封装
export const ajax = (url, data, f = true) => {
if (f) {
uni.showLoading({
title: '加载中...'
});
}
return uni.request({
method: 'GET',
url,
data,
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
timeout: 30000,
}).then(result => {
uni.hideLoading();
if (Array.isArray(result) && result[1]) {
let data = result[1].data || {};
if (data.err_code == 0) {
return Promise.resolve(data);
} else {
if (data.err_code == 2001) {
// #ifdef APP-PLUS
wx.reLaunch({
url: '/pages/sms/smsverification'
})
// #endif
// #ifdef MP-WEIXIN
wx.reLaunch({
url: '/pages/index/index?login=2'
})
// #endif
} else {
//注释掉的原因是后台删除了某个设备组时请求数据会返回30001 权限不够
// let title = errorList[data.err_code];
// layer.toptip(title)
}
}
} else {
layer.fail('数据解析错误')
}
}).catch((err) => {
uni.hideLoading();
return Promise.reject(err);
});  
}

/**
getWxSession方法
*/
//原生平台使用wx获取session
export const getWxSession = (userInfo) => {
var info = JSON.parse(userInfo);
console.log("---11---",info);
return ajax("*",, info).then(res => {
console.log("---222---",res.data);
Object.assign(AppConfig, res.data);
console.log("------",AppConfig);
if (AppConfig.session != '' && AppConfig.session != null) {
uni.switchTab({
url: "/pages/index/index"
})
}
return res.data.userinfo;
});

/**
vue调用:
*/
uni.getProvider({
service: 'oauth',
success: function(res) {
if (~res.provider.indexOf('weixin')) {
uni.login({
provider: 'weixin',
success: function(loginRes) {
uni.getUserInfo({
success: (res) => {
var info = JSON.stringify(res.userInfo);
console.log("---------"+info);
getWxSession(info).then(userInfoRes => {
_other.saveTheLocal(userInfoRes,"weixin");
})
}
})
}
})
}
}
});

更多关于uni-app 原生开发打开调试代码执行 不开调试有代码没执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

已解决

更多关于uni-app 原生开发打开调试代码执行 不开调试有代码没执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html


啥原因,最终发现是为什么?把经历说一下,好让遇到一样问题的开发者参考,谢谢。

回复 DCloud_uniCloud_JSON:return uni.request({}).then(res=>{return Promise.resolve(data);}); 这个组合没跑,具体内部原因出在哪我也不清楚,最后我用的 return new Promise((resolve, reject) => { uni.request({ method: ‘GET’, url, data, header: { “Content-Type”: “application/x-www-form-urlencoded” }, timeout: 30000, }).then(result => { uni.hideLoading(); if (Array.isArray(result) && result[1]) { let data = result[1].data || {}; if (data.err_code == 0) { return resolve(data); } else { if (data.err_code == 2001) { // #ifdef APP-PLUS wx.reLaunch({ url: ‘/pages/sms/smsverification’ }) // #endif // #ifdef MP-WEIXIN wx.reLaunch({ url: ‘/pages/index/index?login=2’ }) // #endif

回复 DCloud_uniCloud_JSON: 就是使用return new Promise((resolve, reject) => { uni.request({}).then(res=>{return resolve(res)}) 这样的组合

回复 DCloud_uniCloud_JSON:请问下你,原生平台的页面返回给上一个页面传数据怎么写啊? 小程序可以这样:

let pages = getCurrentPages(); let currPage = pages[pages.length - 1]; if (currPage.data && currPage.data.farmInfo) { this.item = currPage.data.farmInfo; }

const pages = getCurrentPages(); const prevPage = pages[pages.length - 2]; // #ifdef MP-WEIXIN prevPage.setData({ farmInfo: this.passValue }); // #endif

但是这个在原生平台不行!

回复 7***@qq.com: uni.$emit全局的方法可以满足你的需求吗

回复 DCloud_uniCloud_JSON: 可以的。原生的没有像小程序这样prevPage.$vm.farmInfo = this.passValue;的方法吗?

回复 DCloud_uniCloud_JSON: 没有的话算了,就用uni.$emit吧。感谢

回到顶部