收藏
回答

requestTask.onChunkReceived回调转换JSON报错?

大佬们帮忙看看这个问题,调用的是百度的大模型平台,因为返回的的数据流前边都带 data: 无奈只能去掉前边的,然后再转换JSON,
但是发现转换JSON时会偶发报错.并不是每次回调都会报错.如图其实是有三次回答,第一次成功了,第二次就失败了.搞不懂是不是两次之间太快了?偶发

send() {
        var that = this;
        that.setData({
            text''
        })
        var data = {
            messages: [
                {
                    'role''user',
                    'content': that.data.text0
                }
            ],
            streamtrue
        }
        var requestTask = wx.request({
            url'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token=XXXXX',
            dataJSON.stringify(data),
            method'POST',
            enableChunkedtrue,
            successfunction (r{
            },
            failfunction (r{
            }
        })


        requestTask.onChunkReceived(function (resp{
            var str = textDecoder.decode(resp.data)
            console.log(str)
            if (str.startsWith('data:')) {
                str = str.slice(5);
                var str2 = JSON.parse(str)
                console.log(str2)
                var is_end = str2.is_end;
                var result = str2.result;
                var text = that.data.text;
                text += result;
                that.setData({
                    text: text
                })
                if (is_end) {
                    requestTask.offChunkReceived()
                }
            }
        });
    },
回答关注问题邀请回答
收藏

3 个回答

  • Encounter
    Encounter
    09-29

    我现在就做到这里来了,这个流吐出来的文字不是整段的,一下子三段,一下子五段,根本没办法做处理,然后前面还有个data:这样json的方法也转不出来,有没有其他办法呢


    09-29
    有用
    回复
  • momo
    momo
    07-20

    这是sse格式的流,每次接收的不一定正好是个json string,要自己解析,也可以用第三方现成的库https://www.npmjs.com/package/eventsource-parser

    07-20
    有用
    回复 2
    • 顶风少年
      顶风少年
      07-20
      我打印出来的内容看,每次都是一个带了data: 的字符串 ,后边就是一个json所以我把data: 去掉了
      07-20
      回复
    • momo
      momo
      07-20回复顶风少年
      每行都有换行符\n,不是只去掉data:那么简单,而且量大的时候,第二次接收的不一定是data:开头
      07-20
      回复
  • Mr.Zhao
    Mr.Zhao
    发表于移动端
    07-20
    代码都写成这样了,也不打印下处理后的str
    07-20
    有用
    回复 3
    • 顶风少年
      顶风少年
      07-20
      打印了啊,只是demo,又不是生产的
      07-20
      回复
    • Mr.Zhao
      Mr.Zhao
      发表于移动端
      07-20回复顶风少年
      跟生产啥关系,莫名其妙。json里面有换行符吧,拿出来找在线json格式化看看
      07-20
      回复
    • Mr.Zhao
      Mr.Zhao
      发表于移动端
      07-20回复顶风少年
      每次都是完整json?
      07-20
      回复
登录 后发表内容