co执行generator函数,如何在多个co函数都返回之后再返回数据?
let form = new multiparty.Form({
encoding: 'utf-8',
// uploadDir:"public/upload", //文件上传地址
keepExtensions: true //保留后缀
})
form.parse(ctx.req, function (err, fields, files) {
let data=[]
for(let f of files.file){
// 文件名
let date = new Date()
let time = '' + date.getFullYear() + (date.getMonth() + 1) + date.getDate()
let filepath = 'project/'+time + '/' + date.getTime()
let fileext = f.originalFilename.split('.').pop()
let upfile = f.path
let newfile = filepath + '.' + fileext
//ali-oss
co(function*() {
client.useBucket('p-adm-test')
let result = yield client.put(newfile, upfile)
console.log('文件上传成功!', result.url)
data.push(result.url)
console.log(data)
resolve()
}).catch(function(err) {
console.log(err)
})
}
ctx.response.type = 'json'
ctx.response.body = {
errno: 0,
data: data
}
})
如上代码,我多次执行了co函数,希望每次执行的时候返回的结果push到data数组里,最后返回到前端的数据是多次执行之后的data,但是前端收到的只是第一次返回的data,如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
co
返回的也是promise
按照你这种返回数组可以用promise.all
1 .
promise.all
2 .
co
嵌套