fix: 修复 新浪类型股票代码错误未处理问题

This commit is contained in:
zhangxiangliang 2020-08-21 00:18:16 +08:00
parent d38568d074
commit 3f8eb09e68

View File

@ -1,11 +1,11 @@
// Stocks // Stocks
import Base from "@stocks/base";
import SinaStockTransform from "@stocks/sina/transforms/stock"; import SinaStockTransform from "@stocks/sina/transforms/stock";
import SinaCommonCodeTransform from "@stocks/sina/transforms/common-code"; import SinaCommonCodeTransform from "@stocks/sina/transforms/common-code";
// Utils // Utils
import fetch from "@utils/fetch"; import fetch from "@utils/fetch";
import iconv from "@utils/iconv"; import iconv from "@utils/iconv";
import { DEFAULT_STOCK } from "@stocks/base/utils/constant";
// Types // Types
import Stock from "types/utils/stock"; import Stock from "types/utils/stock";
@ -32,6 +32,11 @@ const Sina: StockApi = {
// 数据深解析 // 数据深解析
const [_, paramsUnformat] = row.split('='); const [_, paramsUnformat] = row.split('=');
if (paramsUnformat === '') {
return { ...DEFAULT_STOCK, code };
}
const params = paramsUnformat.replace('"', '').split(","); const params = paramsUnformat.replace('"', '').split(",");
const data = (new SinaStockTransform(code, params)); const data = (new SinaStockTransform(code, params));
@ -43,6 +48,11 @@ const Sina: StockApi = {
* @param codes * @param codes
*/ */
async getStocks(codes: string[]): Promise<Stock[]> { async getStocks(codes: string[]): Promise<Stock[]> {
// 无股票时返回空数组
if (codes.length === 0) {
return [];
}
const transforms = (new SinaCommonCodeTransform).transforms(codes); const transforms = (new SinaCommonCodeTransform).transforms(codes);
// 数据获取 // 数据获取
@ -55,6 +65,11 @@ const Sina: StockApi = {
return codes.map((code, index) => { return codes.map((code, index) => {
// 数据深解析 // 数据深解析
const [_, paramsUnformat] = rows[index].split('='); const [_, paramsUnformat] = rows[index].split('=');
if (paramsUnformat === '') {
return { ...DEFAULT_STOCK, code };
}
const params = paramsUnformat.replace('"', '').split(","); const params = paramsUnformat.replace('"', '').split(",");
const data = (new SinaStockTransform(code, params)); const data = (new SinaStockTransform(code, params));