UNPKG

@cmstops/pro-compo

Version:

[物料平台文档中心](https://arco.design/docs/material/guide)

47 lines (46 loc) 1.29 kB
import request from "./request.js"; function getTranscodingProgress(BASE_API, id) { return request(BASE_API, { url: `/poplar/v2/transcoding/progress?id=${id}`, method: "get" }); } class TranscodingTask { constructor(file) { this.file = file; this.pollCount = 0; } start(BASE_API, callback) { if (!this.file.id) return Promise.reject(new Error("file error")); return new Promise((resolve, reject) => { const handleTranscoding = async () => { const { code, message } = await getTranscodingProgress( BASE_API, this.file.id ); if (code !== 0) reject(new Error(message)); if (message.state === 1) { callback(message.progress); if (message.progress === 1 && ++this.pollCount === 3) { this.abort(); resolve(false); } } else if (message.state === 2) { this.abort(); resolve(false); } else if (message.state === 3) { this.abort(); resolve(true); } }; this.taskInterval = setInterval(handleTranscoding, 5e3); }); } abort() { clearInterval(this.taskInterval); this.taskInterval = null; } } export { TranscodingTask, getTranscodingProgress };