summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/index.ts11
-rw-r--r--tests/index.test.ts10
2 files changed, 21 insertions, 0 deletions
diff --git a/src/index.ts b/src/index.ts
index de0ad68..80d0560 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -89,6 +89,8 @@ class PendingRequest {
#data: RequestData = {}
+ #timeout: number | null = null
+
#middlewares: Middleware<ResponseData>[] = []
method(method: HttpMethod) {
@@ -159,6 +161,12 @@ class PendingRequest {
return this.#data
}
+ timeout(milliseconds: number) {
+ const request = this.#clone()
+ request.#timeout = milliseconds
+ return request
+ }
+
use(fn: Middleware<any> | Middleware<any>[]) {
const request = this.#clone()
const handlers = Array.isArray(fn) ? fn : [fn]
@@ -226,6 +234,7 @@ class PendingRequest {
filePath,
name,
header: request.#header,
+ timeout: request.#timeout ?? undefined,
enableHttp2: true,
success(res) {
resolveHandler(new Response(res))
@@ -264,6 +273,7 @@ class PendingRequest {
url: request.#buildUrl(),
data: request.body(),
header: request.#header,
+ timeout: request.#timeout ?? undefined,
method: request.#httpMethod,
dataType: request.isJson() ? 'json' : '其他',
responseType: 'text',
@@ -296,6 +306,7 @@ class PendingRequest {
request.#query = { ...this.#query }
request.#header = { ...this.#header }
request.#data = { ...this.#data }
+ request.#timeout = this.#timeout
request.#middlewares = [...this.#middlewares]
return request
}
diff --git a/tests/index.test.ts b/tests/index.test.ts
index c8e0a64..9e1d4ff 100644
--- a/tests/index.test.ts
+++ b/tests/index.test.ts
@@ -318,6 +318,16 @@ describe('HTTP Client', () => {
)
})
+ it('can customize timeout in milliseconds', () => {
+ const factory = new Factory()
+ factory.new().timeout(5000).get('http://example.com')
+ expect(wx.request).toHaveBeenCalledWith(
+ expect.objectContaining({
+ timeout: 5000
+ })
+ )
+ })
+
describe('middleware', () => {
it('should be applied', () => {
const middleware = jest.fn((request, next) => next(request))