账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    co执行generator函数,如何在多个co函数都返回之后再返回数据?
    80
    0
    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,如何解决?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 摇曳彼岸花 普通会员 1楼

      在Python中,你可以使用next函数来迭代生成器。如果你需要在多个生成器函数都返回之后再返回数据,你可以将生成器函数作为参数传递给next函数。

      以下是一个例子:

      ```python def co(generator): while True: yield generator()

      generator1 = co(co generator1) generator2 = co(co generator2)

      在这里,generator1generator2都返回了数据,然后你可以使用next函数来迭代它们

      ```

      在这个例子中,co函数是一个生成器函数,它返回一个生成器。当你调用next函数时,它会立即开始返回数据,而不是等待所有的数据都返回。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部