mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
Support onload/onerror events on XMLHttpRequest.
This commit is contained in:
@ -598,3 +598,21 @@ export var test_XMLHttpRequest_requestShouldBePossibleAfterAbort = function (don
|
||||
|
||||
xhr.send(JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" }));
|
||||
};
|
||||
|
||||
export function test_raises_onload_Event(done) {
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.onload = () => {
|
||||
done(null);
|
||||
}
|
||||
xhr.open("GET", "https://httpbin.org/get");
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
export function test_raises_onerror_Event(done) {
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.onerror = () => {
|
||||
done(null);
|
||||
}
|
||||
xhr.open("GET", "https://no-such-domain-httpbin.org");
|
||||
xhr.send();
|
||||
}
|
||||
|
3
declarations.d.ts
vendored
3
declarations.d.ts
vendored
@ -38,6 +38,9 @@ declare class XMLHttpRequest {
|
||||
readyState: number;
|
||||
responseText: string;
|
||||
status: number;
|
||||
|
||||
onload: () => void;
|
||||
onerror: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
|
17
http/http.ts
17
http/http.ts
@ -39,6 +39,9 @@ export class XMLHttpRequest {
|
||||
public LOADING = 3;
|
||||
public DONE = 4;
|
||||
|
||||
public onload: () => void;
|
||||
public onerror: () => void;
|
||||
|
||||
private _options: definition.HttpRequestOptions;
|
||||
private _readyState: number;
|
||||
private _status: number;
|
||||
@ -112,8 +115,9 @@ export class XMLHttpRequest {
|
||||
}
|
||||
|
||||
}).catch(e => {
|
||||
this._errorFlag = true;
|
||||
});
|
||||
this._errorFlag = true;
|
||||
this._setReadyState(this.DONE);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,6 +171,15 @@ export class XMLHttpRequest {
|
||||
this.onreadystatechange();
|
||||
}
|
||||
}
|
||||
|
||||
if (this._readyState === this.DONE) {
|
||||
if (this._errorFlag && types.isFunction(this.onerror)) {
|
||||
this.onerror();
|
||||
}
|
||||
if (!this._errorFlag && types.isFunction(this.onload)) {
|
||||
this.onload();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get responseText(): string {
|
||||
|
Reference in New Issue
Block a user