微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决

微信小程序上传图片的时候,如果是多图片上传,一般都是直接用一个循环进行wx.uploadFile

这个在电脑上面测试与苹果手机上面都不会有什么问题

但当用安卓测试的时候,你会发现小程序会提示一个the same task is working

wx.uploadFile不能并行,因为wx.uploadFile是一个异步函数,所以循环的时候在安卓手机上会出现并行

解决的方法

做一个上传完的标识,然后

用递归算法进行上传

在上传成功的回调函数里面,直接递归,标识满足直接跳出,完成所有图片上传

贴上个代码段

//上传标识
var i=0
//imglist为要上传图片的路径数组
uploadImg: function () {
    var that = this
    if (i == imglist.length) {
    //清空还原
      news = ""
      city = ""
        i=0
      wait = true
      imglist = []
      serverImg = []
      retrunList = []
      that.setData({
        loding: false,
        src: [],
        disabled: false
      })
      return;
    }
      var imgcount = imglist.length;
      wx.uploadFile({
        url: config.serverUrl(‘index.php/user/uploadtu‘),
        filePath: imglist[i],
        name: ‘file‘,
        formData: { ‘user‘: ‘test‘ },
        success: function (res) {
          serverImg.push(res.data)
          if (imgcount == serverImg.length) {
            var serverImgStr = serverImg.join("|")
            wx.request({
              url: config.serverUrl(‘index.php/user/baobeiadd‘),
              method: ‘POST‘,
              data: Util.json2Form({
                imglist: serverImgStr,
                userId: userId,
                news: news,
                city: city,
                latitude: latitude,
                longitude: longitude
              }),
              header: {
                ‘content-type‘: ‘application/x-www-form-urlencoded‘
              },
              success: function (res2) {
                if (res2.data.state == "ok") {

                  that.setData({
                    loding: false,
                    butTxt: "发布",
                    disabled: false
                  })

                  Util.mesUrl("发布成功!", "../index/index")
                }
                else {
                  Util.mes("描述至少10人字以上哦,还有图片也要选哦!")
                }
              }
            })
          }else
          {
          //这里直接递归
          i++;
          that.uploadImg();
          }
        },
        fail: function (e) {
          console.log(e)
          Util.mes("图片上传失败,请重新发布!" + i)
        }
      })

  },

  

时间: 2024-08-06 23:50:49

微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决的相关文章

微信小程序wx.uploadFile 上传文件 的两个坑

fileUpload: function (tempFilePath) { var that = this;//坑1: this需要这么处理 wx.uploadFile({ url: url地址, //app.ai_api.File.file filePath: tempFilePath, //文件路径 这里是mp3文件 name: 'file', //随意 header: { 'Content-Type': 'multipart/form-data', 'Authorization': wx.

微信小程序wx.uploadFile的两个坑

setImage:function(e){ var _this = this //坑1 wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: function (res) { var tempFilePaths = res.tempFilePaths console.log(tempFilePaths) wx.uploadFile({ u

微信小程序wx.request接口

微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJECT) 发起网络请求 url data header method dataType wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'applicat

微信小程序 wx:key详细介绍

转自:http://www.jb51.net/article/95980.htm 微信小程序 wx:key 在自己学习的时候不是多明白到底是怎么回事,经过上网查阅资料,整理下: 个人感觉官方给出的例 子不是很明确,官方解释如下: wx:key 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符. wx:key

监控微信小程序wx.request请求失败

在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request 请求失败",可以搜索到很多相关的文章,下面列出一些: wx.request 失败| 微信开放社区 微信小程序 wx.request 请求失败- SegmentFault 思否 小程序部分机型小程序用户无法发起 wx.request 请求,网络错误问题 ... wx.request()失败,requ

微信小程序wx.request组件的那些坑

最近在做一个教育的在线发布系统,打算用微信小程序做前端,后端用php的CI框架,这两天把CI框架的基本功能已经啃完,因为手册比较完善,所以按照逻辑走一边就通了. 反观微信小程序,帮助代码不多,对于一些没接触过前端和js开发的新手来说,很多流程和细节都会拿不准. 1.这两天遇到最大的困扰就是wx.request组件如何从php服务器端取回数据并显示在小程序界面上,这里涉及到一个通信, 因为小程序目前的机构和框架都是基于ajax异步交互的基础上的,所以要懂得小程序的数据读写功能,首先要了解ajax的

微信小程序 wx.request

一:问题 微信小程序 post请求时,服务器后台接受不到data里面的数据的bug. 二:解决办法 wx.request({ url: 'http://xxxxxxxxx/Create', method: 'POST', data: { "userid": userid, "way": way, "specificWay": specificWay, "money": money, "dateTime":

微信小程序wx.setStorage(OBJECT)

关于微信小程序的:wx.setStorage(OBJECT)在官网API介绍到: 原文地址:https://www.cnblogs.com/Webzhoushifa/p/9491880.html

在微信小程序里自动获得当前手机所在的经纬度并转换成地址

效果:我在手机上打开微信小程序,自动显示出我当前所在的地理位置: 具体步骤: 1. 使用微信jssdk提供的getLocation API拿到经纬度: 2. 调用高德地图的api使用经纬度去换取地址的文字描述. wx.ready(() => { wx.getLocation({ type: "gcj02", success: function(res) { var location = "&location=" + res.longitude + &q