teambition-server-sdk
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -1,2 +0,5 @@ | ||
### 2018-10-23 | ||
- 数据工厂支持数据分片请求func | ||
### v0.0.4 2019-01-08 | ||
- fix: 分片处理机制 等差数列 => 恒等 | ||
### v0.0.3 2018-10-23 | ||
- 数据工厂支持数据分片请求func |
@@ -8,4 +8,5 @@ "use strict"; | ||
class DataFactory { | ||
constructor(raw) { | ||
constructor(raw, opts) { | ||
this.raw = raw; | ||
this.opts = opts; | ||
} | ||
@@ -19,3 +20,3 @@ /** | ||
*/ | ||
async JobSlice(job, capacity = 200) { | ||
async JobSlice(job, capacity = 200, needReturn = true) { | ||
if (!Array.isArray(this.raw)) { | ||
@@ -28,19 +29,17 @@ throw new Error('raw must be an array'); | ||
// 分片请求 | ||
const dataSize = this.raw.length; | ||
const rawSize = this.raw.length; | ||
let ret = []; | ||
let result; | ||
let start = 0; | ||
let end = capacity; | ||
let cursor = 0; | ||
// 保证顺序性 | ||
while (true) { | ||
if (end >= dataSize) { | ||
result = await job(this.raw.slice(start)); | ||
ret = ret.concat(result); | ||
if (cursor >= rawSize) { | ||
break; | ||
} | ||
else { | ||
result = await job(this.raw.slice(start, end)); | ||
ret = ret.concat(result); | ||
start = end; | ||
end = capacity + end; | ||
result = await job(this.raw.slice(cursor, cursor + capacity), this.opts); | ||
cursor += capacity; | ||
if (needReturn) { | ||
ret = ret.concat(result); | ||
} | ||
} | ||
@@ -47,0 +46,0 @@ } |
{ | ||
"name": "teambition-server-sdk", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "Javascript SDK for teambition server", | ||
@@ -8,3 +8,4 @@ "main": "lib/index.js", | ||
"build": "tsc", | ||
"test": "NODE_ENV=test mocha" | ||
"test": "NODE_ENV=test mocha", | ||
"lint": "tslint -p tsconfig.json -t stylish 'src/**/*.ts' 'test/**/*.ts'" | ||
}, | ||
@@ -11,0 +12,0 @@ "repository": { |
@@ -0,1 +1,5 @@ | ||
[![NPM version][npm-image]][npm-url] | ||
![Build Status][travis-image] | ||
[![Downloads][downloads-image]][downloads-url] | ||
## Teambition Server SDK | ||
@@ -24,1 +28,31 @@ Teambition 服务端 Node SDK,封装如下方法: | ||
### 官方 API | ||
封装 Teambition API,请至 [https://docs.teambition.com/](https://docs.teambition.com/) 查阅 API 目录 | ||
如果你是第三方开发者,需要自建应用,请前往 [Teambition 开发者中心](https://developer.teambition.com/) | ||
```js | ||
// TS DEMO | ||
import * as TeambitionSDK from 'teambition-server-sdk' | ||
const teambitionSDK = new TeambitionSDK.Client.Task() | ||
return teambitionSDK | ||
// optional 可选的,假如你是私有部署或其它,请填入正确的地址 | ||
.setUrl('add your custom url') | ||
// optional | ||
.setHeader({ | ||
// optional | ||
cookie: 'your cookie' | ||
// optional | ||
Authorization: 'your access token', | ||
}) | ||
.createOne(task) | ||
``` | ||
[npm-url]: https://www.npmjs.com/package/teambition-server-sdk | ||
[npm-image]: https://img.shields.io/npm/v/teambition-server-sdk.svg | ||
[travis-image]: https://travis-ci.org/teambition/teambition-server-sdk.svg | ||
[downloads-url]: https://npmjs.org/package/teambition-server-sdk | ||
[downloads-image]: https://img.shields.io/npm/dm/teambition-server-sdk.svg?style=flat-square |
@@ -8,5 +8,7 @@ | ||
private raw: any | ||
private opts: object | ||
constructor (raw: any) { | ||
constructor (raw: any, opts?: object) { | ||
this.raw = raw | ||
this.opts = opts | ||
} | ||
@@ -21,3 +23,3 @@ | ||
*/ | ||
async JobSlice(job: any, capacity: number = 200): Promise<any> { | ||
async JobSlice(job: any, capacity: number = 200, needReturn: boolean = true): Promise<any> { | ||
if (!Array.isArray(this.raw)) { | ||
@@ -31,19 +33,17 @@ throw new Error('raw must be an array') | ||
// 分片请求 | ||
const dataSize = this.raw.length | ||
const rawSize: number = this.raw.length | ||
let ret = [] | ||
let result | ||
let start = 0 | ||
let end = capacity | ||
let result: [any] | ||
let cursor = 0 | ||
// 保证顺序性 | ||
while (true) { | ||
if (end >= dataSize) { | ||
result = await job(this.raw.slice(start)) | ||
ret = ret.concat(result) | ||
if (cursor >= rawSize) { | ||
break | ||
} else { | ||
result = await job(this.raw.slice(start, end)) | ||
ret = ret.concat(result) | ||
start = end | ||
end = capacity + end | ||
result = await job(this.raw.slice(cursor, cursor + capacity), this.opts) | ||
cursor += capacity | ||
if (needReturn) { | ||
ret = ret.concat(result) | ||
} | ||
} | ||
@@ -53,2 +53,2 @@ } | ||
} | ||
} | ||
} |
27445
24
57