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,如何解决?
co
返回的也是promise
按照你这种返回数组可以用promise.all
1 .
promise.all
2 .
co
嵌套