小程序 报错errMsg: “hideLoading:fail:toast can‘t be found“ ?

小程序体验版上/真机上报错:errMsg: "hideLoading:fail:toast can't be found" 模拟器上却看不到,

  • wx.showLoading 和 wx.showToast 同时只能显示一个;
  • wx.showLoading 应与 wx.hideLoading 配对使用;
  • 把请求接口统一封装,开始请求接口时showLoading,请求接口后hideLoading
  • 一个页面同时请求多个接口,由于请求是异步的,很有可能上一个开启了showLoading还没请求完成下一个有开始请求了,这个时候的showLoading与hideLoading就没有对应了。

一、错误代码示例和解决方法 

import api from'./api'
var host = 'http://127.0.0.1::5500/';/*** POST请求,* URL:接口* postData:参数,json类型* doSuccess:成功的回调函数* doFail:失败的回调函数*/
//10016:token为空,10008:token无效,20037:集合为空
function request(url, postData) {postData.token = wx.getStorageSync("token");//相当于openidwx.showLoading({ title: '加载中...', mask: true });return new Promise((resolve, reject)=>{    wx.request({//项目的真正接口,通过字符串拼接方式实现url: url,header: {"content-type": "application/json;charset=UTF-8"},data: postData,method: 'POST',dataType: "json",success: function (res) {//参数值为res.data,直接将返回的数据传入if(res.data.code === "0000"){resolve(res.data);} else {wx.showToast({ title: res.data.msg, icon: 'none', duration: 2000 });}        },fail: function (err) {reject(err)},complete: function(res){wx.hideLoading();}})})
}/*** module.exports用来导出代码* js文件中通过var call = require("../util/request.js") 加载* 在引入引入文件的时候" "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能* 项目目录不止一级,不同的js文件对应的工具类的位置不一样* 使用: call.post("接口地址", {参数}, function(res){})*/
module.exports.post = request;
module.exports.get = getData;

这是我第一次封装的代码,看逻辑没什么问题,但是真机调试第一次打开总是报错。经过测试发现:

  • success 比 complete 先运行。因此上面代码 wx.showLoading 还没闭合时,wx.showToast 就开始显示了。
  • errMsg: "hideLoading:fail:toast can't be found" 不是 wx.request 请求方法中的 fail 和 complete 发出来的错误信息,而是 wx.hideLoading 发出来的错误信息。

结合上面的发现,重新改了一次请求接口的封装过程:

import api from'./api'
var host = 'http://127.0.0.1:5500/';//10016:token为空,10008:token无效,20037:集合为空
function request(url, postData) {  postData.token = wx.getStorageSync("token");//相当于openidwx.showLoading({ title: '加载中...', mask: true });return new Promise((resolve, reject)=>{    wx.request({//项目的真正接口,通过字符串拼接方式实现url: url,header: { "content-type": "application/json;charset=UTF-8" },data: postData,method: 'POST',dataType: "json",success: function (res) {//参数值为res.data,直接将返回的数据传入if(res.data.code === "0000"){resolve(res.data);        } else {// wx.showToast({ title: res.data.msg, icon: 'none', duration: 2000 });}        },fail: function (err) {reject(err)},complete: function(res){wx.hideLoading({complete: function(hide){console.log(hide); //可以看到错误信息被打印出来了if(res.data.code === "0000"){} else {wx.showToast({ title: res.data.msg, icon: 'none', duration: 2000 });}}});}})})
}module.exports.post = request;

二、module.exports

顺便一提上面 module.exports.post = 函数名/变量名module.exports = {} 的区别:

(1)上面我使用的是 module.exports.自定义名称A = 函数名 这种方法,在调用时,

//引用文件路径:在Page()的最外层
import 自定义文件名 from '文件地址';//使用:与函数名无关了
自定义文件名.自定义名称A();

module.exports.自定义名称A = 函数名 中,“自定义名称A”相当于给函数名重新命名,所以自定义名称A 经常都是与函数名同名。

(2) module.exports = { post } ,这种写法相当于:module.exports = { post: post },与上面写法在调用是的区别在于:

import {方法名1, 方法名2} from '文件地址';//使用:直接使用
方法名1();

参考:

1. 小程序showLoading:网络请求前显示“加载中...”,请求完成时关闭加载中

2. 关于微信小程序VM22:2 (in promise) MiniProgramError {“errMsg“:“hideLoading:fail:toast can‘t be found“

3. 小程序真机调试报错: errMsg“:“hideLoading:fail:toast can‘t be found“?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世界名牌大学课件下载地址

一、加州大学伯克利分校 http://webcast.berkeley.edu/courses.php 作为美国第一的公立大学,伯克利分校提供了许多优秀教授的播客和视频讲座,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常&#…

jquery-deferred应用

我们说jquery1.5之后用的用deferred,那么deferred到底是个什么东西,看个例子var wait function(){var task function(){console.log(执行完成);}setTimeout(task, 2000); } wait(); 现在在task里面的执行完成之后进行某些特别复杂的操作,代…

自动装箱,拆箱和NoSuchMethodError

J2SE 5为Java编程语言引入了许多功能。 这些功能之一是自动装箱和拆箱 ,这是我几乎每天都没有考虑过的功能。 它通常很方便(尤其是与收藏夹一起使用时),但有时会导致一些令人讨厌的惊喜 ,即“ 怪异 ”和“ 疯狂” 。 在…

vue 不能监测数组长度变化length的原因

由于 JavaScript 的限制,Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] newValue 当你修改数组的长度时,例如: vm.items.length newLength因为vue的响应式是通…

vue 动态显示三级路由

无需 vuex、本地存储实现动态显示三级路由。 目录 一、需求描述: 二、代码 2.1 路由配置 1. 我的一级菜单和二级菜单的路由配置的: 2. 三级菜单的路由配置: 3. 上面有几个变量和要注意的细节: 2.2 封装导航栏 2.3 封装面…

第二章 Vue快速入门-- 18 v-for中key的使用注意事项

注意:如果属性和方法还没定义直接使用的话&#xff0c;就会报 xxx is not defined 导致界面不能正常显示。我看视频教程里老师的可以直接使用&#xff0c;而且界面正常显示&#xff0c;可能是vue版本不同吗&#xff1f;还不清楚 1 <!DOCTYPE html>2 <html lang"…

口碑网发布2010吃住玩消费风向指数

当在淘宝网上买衣服、买电器、买……都变得司空见惯&#xff0c;下一步我们会在网上完成什么消费&#xff1f; 通过网购等电子商务模式的带动&#xff0c;电子商务平台对于老百姓日常消费、生活的影响逐渐深化。原本更多依靠传统手段完成的吃住玩等生活消费&#xff0c;现在也…

Java并发教程–线程安全设计

在回顾了处理并发程序时的主要风险&#xff08;如原子性或可见性 &#xff09;之后&#xff0c;我们将进行一些类设计&#xff0c;以帮助我们防止上述错误。 其中一些设计导致了线程安全对象的构造&#xff0c;从而使我们可以在线程之间安全地共享它们。 作为示例&#xff0c;我…

ES6 iterator 迭代器

iterator使用TypeScript 的描述&#xff1a; interface Iterable {[Symbol.iterator]() : Iterator,}interface Iterator {next(value?: any) : IterationResult,}interface IterationResult {value: any,done: boolean,} 一个数据结构只要具有 Symbol.iterator属性&#xff0…

vue 后端返回二进制流文件,前端如何实现下载?

目录 1. axios 请求二进制流文件导出文件 1.1 后台返回的二进制流&#xff1a; 1.2 使用&#xff1a; 1.3 需要注意以下几点&#xff1a; 2. 关于 arraybuffer 和 blob 2.1 ArrayBuffer 和 blob 2.2 区别 2.3 相互转换 3. 主要参考&#xff1a; 1. axios 请求二进制…

python量化之路:获取历史某一时刻沪深上市公司股票代码及上市时间

python量化之路&#xff1a;获取历史某一时刻沪深上市公司股票代码及上市时间 最近开始玩股票量化&#xff0c;由于想要做完整的股票回测&#xff0c;因此股票的上市和退市信息就必不可少。因为我们回测的时候必须要知道某一日期沪深股票的成分包含哪些对吧。所以我们要把沪深全…

《网页设计创意书》读后感

刚刚收到《网页设计创意书》&#xff0c;确实有点惊喜&#xff0c;开始以为是像之前审读的书一样是一叠叠的打印纸&#xff0c;没想到是一本成品书&#xff0c;拿到手上沉甸甸的&#xff0c;随便翻看了一下&#xff0c;没想到里面竟然还是全彩页印刷的&#xff0c;本书的第一感…

游戏AI –行为树简介

游戏AI是一个非常广泛的主题&#xff0c;尽管有很多资料&#xff0c;但我找不到能以较慢&#xff0c;更容易理解的速度缓慢介绍这些概念的东西。 本文将尝试解释如何基于行为树的概念来设计一个非常简单但可扩展的AI系统。 什么是AI&#xff1f; 人工智能是参与游戏的实体表现…

js 常用类型转换简写

1、字符串转数字 666// 666 2、转换为字符串 666//666 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

mockJs文档(二)

mockJs官方文档 mockJs文档&#xff08;一&#xff09; 目录 1. Mock.mock( rurl?, rtype?, template|function( options ) ) 1.1 Mock.mock( template ) 1.2 Mock.mock( rurl, template ) 1.3 Mock.mock( rurl, function( options ) ) 1.4 Mock.mock( rurl, r…

winforms中限定上传文件类型

获取文件路径string fileExtension System.IO.Path.GetExtension(filePath).ToLower();bool flag true;string[] AllowExtension { ".doc", ".xls", ".ppt", ".docx", ".xlsx", ".pptx", ".txt", &q…

liteos错误处理(十一)

1. 概述 1.1 基本概念 错误处理指用户代码发生错误时&#xff0c;系统调用错误处理模块的接口函数&#xff0c;完成上报错误信息&#xff0c;并调用用户自己的钩子函数&#xff0c;进行特定的处理。 错误处理模块实现OS内部错误码记录功能。OS内部错误码无法通过接口返回&#…

这是东西:jUnit:动态测试生成

当您需要在许多不同的输入值或配置上运行同一组测试时&#xff0c;动态测试生成很有用。 可以使用参数化测试或使用理论来实现。 当您有大量数据用作参数并想对所有组合进行测试时&#xff0c;这些理论非常有用。 您得到的控制较少&#xff0c;但是您不必自己编写合并和迭代的…

js 变量提升与函数提升

规则&#xff1a; 函数的提升优先于变量提升。同名的函数会覆盖同名的函数与变量。同名的变量不会覆盖同名的函数。 示例代码1&#xff1a; <!DOCTYPE html><html lang"zh"><head><meta charset"UTF-8" /><meta name"vi…

mockJs文档(一)

Mock.js 官网 目录 1. 开始安装 1.1 Node&#xff08;CommonJS&#xff09; 1.2 CMD方式 2. 语法规范 2.1 数据模板定义规范 DTD 2.1.1. 属性值是字符串 String 2.1.2. 属性值是数字 Number 2.1.3. 属性值是布尔型 Boolean 2.1.4. 属性值是对象 Object 2.1.5. 属性值…