UNPKG

@coze/taro-api

Version:

Official Coze Taro SDK for seamless AI integration into your applications | 扣子官方 Taro SDK,助您轻松集成 AI 能力到应用中

43 lines (42 loc) 1.39 kB
import { getEnv } from '@tarojs/taro'; import { APIError } from '@coze/api'; import { Deferred } from '../helpers/async'; import { EventName } from './types'; import { EventSource as EventSourceWeapp } from './index.weapp'; import { EventSource as EventSourceTT } from './index.tt'; import { EventSource } from './index'; const ES = getEnv() === 'TT' ? EventSourceTT : getEnv() === 'WEAPP' ? EventSourceWeapp : EventSource; export function sendRequest(config, result) { result.deferred = new Deferred(); result.done = false; const eventSource = new ES(config) .on(EventName.Chunk, msg => { result.messages.push(msg.data); result.deferred?.resolve(msg.data); result.deferred = new Deferred(); }) .on(EventName.Success, msg => { result.done = true; result.deferred?.resolve(msg); }) .on(EventName.Fail, msg => { const data = msg.data || {}; data.error = data.error || data.detail; const error = APIError.generate(200, data, msg.errMsg, { 'x-tt-logid': data.error?.logid, }); result.done = true; result.error = error; result.deferred?.reject(error); }); if (config.signal) { config.signal.addEventListener?.('abort', () => { eventSource.abort(); }); } eventSource.start(); }