⼩程序保存多张图⽚的实现⽅法前⾔
使⽤promise 队列,保存多张图⽚到⼿机相册
问题:有些⼿机会出现只能保存五张图⽚,报错信息:⽆法写⼊
promise需要好好学习
核⼼代码
// pages/saveImgs/index.js
import { writePhotosAlbum } from '../../utils/util'
Page({
/**
* 页⾯的初始数据
*/
data: {
list: [
'p1buyer/admin/special/special_img_20190301160008479.jpg',
'p1buyer/admin/special/special_img_20190301160013201.jpg',
'p1buyer/admin/special/special_img_20190301160015969.jpg',
'p1buyer/admin/special/special_img_20190301160025498.jpg',
'p1buyer/admin/special/special_img_20190301160031519.jpg',
写文章的小程序'p1buyer/admin/special/special_img_20190301160042689.jpg',
'p1buyer/admin/special/special_img_20190301160108243.jpg',
'p1buyer/admin/special/special_img_20190301160111756.jpg',
'p1buyer/admin/special/special_img_20190304160141454.jpg'
]
,
loading:false
},
/**
* ⽣命周期函数--监听页⾯加载
*/
onLoad: function(options) {},
// 下载图⽚
downloadImgs() {
var _this = this
// 获取保存到相册权限
writePhotosAlbum(
function success() {
wx.showLoading({
title: '加载中',
mask: true
})
// 调⽤保存图⽚promise队列
_this
.queue(_this.data.list)
.then(res => {
wx.hideLoading()
wx.showToast({
title: '下载完成'
})
})
.catch(err => {
wx.hideLoading()
console.log(err)
})
},
function fail() {
wx.showToast({
title: '您拒绝了保存到相册'
})
}
)
},
// 队列
queue(urls) {
let promise = solve()
urls.forEach((url, index) => {
promise = promise.then(() => {
return this.download(url)
})
})
return promise
},
// 下载
download(url) {
return new Promise((resolve, reject) => {
wx.downloadFile({
url: url,
success: function(res) {
var temp = pFilePath
wx.saveImageToPhotosAlbum({
filePath: temp,
success: function(res) {
resolve(res)
},
fail: function(err) {
reject(res)
}
})
},
fail: function(err) {
reject(err)
}
})
})
}
})
项⽬案例
git clone github/sunnie1992/soul-weapp.git
直接⽤⼩程序开发⼯具打开就可以看到案例了
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。