收藏
回答

在network里面封装了一个上传文件的函数,如何使用api的onProgressUpdate?



回答关注问题邀请回答
收藏

2 个回答

  • 微盟
    微盟
    2021-06-16

    理顺一点。

    promise是单个完成状态,只会触发一次的。进度是一个过程,所以要么是把上传任务存起来,要么是把上传进度存起来,供查询。


    const process = {} // 存上传进度
    const tasks = {} // 存上传任务
    static uploadFile(id, name, path, token){
    	return new Promise(reslove, reject) {
    		let task = wx.uploadFile({
    		    success (res) {
    		    	reslove(res)
    		    }
    		})
    		task.onProgressUpdate(res => {
    			process[name] = res // 存起来
    			console.log('当前任务', name, '的进度是:', res.progress)
    		})
    		tasks[name] = task // 存起来
    	}
    }
    // 根据 name 查询当前上传的进度
    function checkProgress(name) {
    	return process[name] || {}
    }
    
    
    
    
    =========
    
    
    
    
    // 实际上传调用的地方
    FileRequest.uploadFile(id, '微盟解决方案.zip').then(res => {
    	console.log('文件:', '微盟解决方案.zip', '上传成功!')
    })
    // 自行根据需要在某个时刻去查询上传进度。
    let timer = setInterval(function(){
    	let progress = checkProgress('微盟解决方案.zip')
    	if(progress.process >= 100) {
    		clearInterval(timer)
    	}
    }, 1000)
    
    
    // 读取一个任务,查进度。 多次 onProgressUpdate 需要注意是否被覆盖。
    tasks['微盟解决方案.zip'].onProgressUpdate(res => {
    	console.log('当前任务', name, '的进度是:', res.progress)
    })
    
    
    
    2021-06-16
    有用
    回复
  • 😷
    😷
    2021-06-08

    这里是我的调用,我想onProgressUpdate知道上传的进度

    2021-06-08
    有用
    回复
登录 后发表内容