- JS中函数执行顺序问题?
在一个JS中,计划先 上传2张图片并用一个数组保存其返回的云文件ID,然后将这个数组和其他一些信息一起添加到一条记录中. 结果发现添加的记录中无云文件ID数组. 怀疑是函数执行顺序方面的问题,但不熟悉JS,又不确定是什么问题.想问一下有没有什么好的解决办法. 代码如下: [代码]// pages/tab1/tab1.js[代码][代码]var[代码] [代码]text,openId;[代码][代码]var[代码] [代码]imageTempPath=[代码][代码]new[代码] [代码]Array();[代码][代码]var[代码] [代码]imageTempId = [代码][代码]new[代码] [代码]Array();[代码][代码]const db= wx.cloud.database({env: [代码][代码]'hhu-find-2019'[代码][代码]});[代码][代码]const DB = db.collection([代码][代码]'list'[代码][代码]);[代码][代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]imagePathList:[][代码][代码] [代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]addImage:[代码][代码]function[代码][代码](e){[代码][代码] [代码][代码]var[代码] [代码]that=[代码][代码]this[代码][代码];[代码][代码] [代码][代码]wx.chooseImage({[代码][代码] [代码][代码]count: 2,[代码][代码] [代码][代码]sizeType:[[代码][代码]'compressed'[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {[代码][代码] [代码][代码]//console.log(res)[代码][代码] [代码][代码]//image.push(res.tempFilePaths)[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]imagePathList: res.tempFilePaths[代码][代码] [代码][代码]})[代码][代码] [代码][代码]imageTempPath.push(res.tempFilePaths[0])[代码][代码] [代码][代码]imageTempPath.push(res.tempFilePaths[1])[代码][代码] [代码][代码]//console.log(imageTempPath)[代码][代码] [代码][代码]//console.log("选择图片API路径:",res.tempFilePaths)[代码][代码] [代码][代码]//console.log("Data数据imagePathList路径",imagePathList)[代码][代码] [代码] [代码] [代码][代码]},[代码][代码] [代码][代码]fail:[代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'选择图片失败!'[代码][代码],[代码][代码] [代码][代码]icon:[代码][代码]'none'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码] [代码] [代码] [代码] [代码][代码]submitText:[代码][代码]function[代码][代码](e) {[代码][代码] [代码][代码]text=e.detail.value;[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]submit:[代码][代码]function[代码][代码](e){[代码][代码] [代码][代码]var[代码] [代码]that=[代码][代码]this[代码][代码];[代码][代码] [代码][代码]//console.log(text)[代码][代码] [代码][代码]//获取openId[代码][代码] [代码][代码]wx.cloud.callFunction({[代码][代码] [代码][代码]name:[代码][代码]"getOpenId"[代码][代码],[代码][代码] [代码][代码]success(res){[代码][代码] [代码][代码]//console.log(res)[代码][代码] [代码][代码]openId=res.result.openid[代码][代码] [代码][代码]//console.log(openId)[代码][代码] [代码][代码]},fail(res){[代码][代码] [代码][代码]console.log([代码][代码]"Error:Call Function(getOPenId) error!"[代码][代码],res)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码] [代码] [代码][代码]//console.log(imageTempPath)[代码][代码] [代码][代码]//循环上传照片并获取云ID[代码][代码] [代码][代码]for[代码][代码]([代码][代码]var[代码] [代码]i=0;i<imageTempPath.length;i++){[代码][代码] [代码][代码]wx.cloud.uploadFile({[代码][代码] [代码][代码]cloudPath: [代码][代码]'images/'[代码][代码].concat(imageTempPath[i].slice(58) ), [代码][代码]// 上传至云端的路径[代码][代码] [代码][代码]filePath: imageTempPath[i], [代码][代码]// 小程序临时文件路径[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {[代码][代码] [代码][代码]// 返回文件 ID[代码][代码] [代码] [代码] [代码][代码]imageTempId.push(res.fileID)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'图片上传成功!'[代码][代码],[代码][代码] [代码][代码]icon: [代码][代码]'success'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]console.log([代码][代码]"图片上传成功!"[代码][代码])[代码][代码] [代码][代码]console.log(imageTempId)[代码] [代码] [代码][代码]//console.log(res.fileID)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail:[代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]//console.log("Error:Can't upload selected images!")[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: '图片上传失败!',[代码] [代码] [代码][代码]icon: '[代码][代码]none[代码][代码]'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]} [代码][代码] [代码][代码]})[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]that.addDatabase();[代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]addDatabase: function (e) {[代码][代码] [代码][代码]//添加包含图片云ID和 textarea 内容的数据库记录[代码][代码] [代码][代码]DB.add({[代码][代码] [代码][代码]// data 字段表示需新增的 JSON 数据[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]// _id: '[代码][代码]todo-identifiant-aleatoire[代码][代码]', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了[代码][代码] [代码][代码]description: text,[代码][代码] [代码][代码]imageId: imageTempId,[代码][代码] [代码][代码]openId: openId,[代码][代码] [代码][代码]time: db.serverDate(),[代码][代码] [代码][代码]tags: [],[代码][代码] [代码][代码]check: false[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success: function (res) {[代码][代码] [代码][代码]// res 是一个对象,其中有 _id 字段标记刚创建的记录的 id[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]console.log(imageTempId)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: '[代码][代码]提交数据库成功![代码][代码]',[代码][代码] [代码][代码]icon: '[代码][代码]sucess[代码][代码]'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]console.log('[代码][代码]提交数据库成功![代码][代码]')[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]fail: function (res) {[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: '[代码][代码]提交数据库失败![代码][代码]',[代码][代码] [代码][代码]icon: '[代码][代码]none'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码] [代码]})[代码] [图片]
2019-12-11 - 关于wx.chooseImage()的一些问题?
最近在做小程序中的图片上传组件时发现几个问题(基本模仿uploader,但我看不懂uploader的文档然后没用😂) 想实现这种效果: 点击第三幅图片添加图片并在前面显示 [图片] 我想用循环渲染解决: [代码]//index.js[代码][代码]data: {[代码][代码] [代码][代码]imagePathList:[][代码][代码] [代码] [代码] [代码][代码]},[代码]然后用了2种方式: 1.第一次脑残了,在index.js开头定义了 var image=new Array(); 然后给第三张图bindtap:"addImage" [代码]addImage:[代码][代码]function[代码][代码](e){[代码][代码] [代码][代码]var[代码] [代码]that=[代码][代码]this[代码][代码];[代码][代码] [代码][代码]wx.chooseImage({[代码][代码] [代码][代码]count: 2,[代码][代码] [代码][代码]sizeType:[[代码][代码]'compressed'[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {)[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]imagePathList: res.tempFilePaths[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码]这种情况下如果同时选择2张图片会出现 [图片] 并报错 [图片] 但tempFilePaths[]和image[]中都有2个相同的文件路径,然后再继续点击加号图片依然可以添加图片且 若只选择一张图片,图片正常显示且tempFilePaths[].length=1; image[].length=3.(新增加的为tempFilePaths[]中的那唯一一个路径值),不报错 若再选择2张图片,图片再度不能显示且tempFilePaths[].length=2; image[].length=3.(新增加的为tempFilePaths[]中的第一个路径值),报错同上图 且之后每次操作重复以上现象 [图片] 2.后来想想不需要image[],直接保留一个 [代码]that.setData({[代码][代码] [代码][代码]imagePathList: res.tempFilePaths[代码][代码] [代码][代码]})[代码]便可以让二者同步且正常实现功能 所以有些好奇第一种情况的错误原因
2019-12-10 - 请问使用flex布局无法让项目在主轴上居中对齐怎么解决?
page.wxml代码如下:[代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"page"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]>[代码][代码] [代码][代码]<[代码][代码]icon[代码] [代码]type[代码][代码]=[代码][代码]"info"[代码] [代码]size[代码][代码]=[代码][代码]"60"[代码] [代码]color[代码][代码]=[代码][代码]"tomato"[代码][代码]></[代码][代码]icon[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码] [代码] [代码][代码]<[代码][代码]view[代码] [代码]>[代码][代码] [代码][代码]<[代码][代码]text[代码][代码]>本页面仅针对开发者开放</[代码][代码]text[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码] page.wxss代码如下: [代码].page{[代码][代码] [代码][代码]display: flex;[代码][代码] [代码][代码]flex-direction: column;[代码][代码] [代码][代码]justify-content: center;[代码][代码] [代码][代码]align-items: center[代码][代码]}[代码] 想实现的效果: [图片]
2019-12-07 - 如图的功能如何实现?
[图片] 这是小程序"小程序示例"中的,请问"uploadfile"下面的组件怎么绘制啊?萌新一个 想实现它的功能,点击后选择图片,然后选择的图片在方框中呈现出来进行预览
2019-12-04 - 实现功能-审核小程序用户提交的内容?
想在小程序中实现功能,普通用户进行微信登录后可选择图片上传并附带一些文字,管理员登录后可以查看所有待审核的资料并在审核成功后在另一页面更新这些资料,开通云开发.请问有没有什么好的实现思路?
2019-11-19 - 请问图片中效果如何做出?
[图片]
2019-11-19 - 请问openID和unionID有什么区别啊?
如题,俺是个小萌新(●ˇ∀ˇ●)
2019-11-05