提交 eebb449b 编写于 作者: A Alex Dima

Move Promise.xhr from JS to TS (in base/common/network)

上级 b38055cd
......@@ -4,6 +4,8 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import {TPromise} from 'vs/base/common/winjs.base';
export namespace Schemas {
/**
......@@ -18,3 +20,65 @@ export namespace Schemas {
export var file:string = 'file';
}
export interface IXHROptions {
type?:string;
url?:string;
user?:string;
password?:string;
responseType?:string;
headers?:any;
customRequestInitializer?:(req:any)=>void;
data?:any;
}
export function xhr(options:IXHROptions): TPromise<XMLHttpRequest> {
let req:XMLHttpRequest = null;
let canceled = false;
return new TPromise<XMLHttpRequest>((c, e, p) => {
req = new XMLHttpRequest();
req.onreadystatechange = () => {
if (canceled) {
return;
}
if (req.readyState === 4) {
// Handle 1223: http://bugs.jquery.com/ticket/1450
if ((req.status >= 200 && req.status < 300) || req.status === 1223) {
c(req);
} else {
e(req);
}
req.onreadystatechange = () => { };
} else {
p(req);
}
};
req.open(
options.type || 'GET',
options.url,
// Promise based XHR does not support sync.
//
true,
options.user,
options.password
);
req.responseType = options.responseType || '';
Object.keys(options.headers || {}).forEach((k) => {
req.setRequestHeader(k, options.headers[k]);
});
if (options.customRequestInitializer) {
options.customRequestInitializer(req);
}
req.send(options.data);
}, () => {
canceled = true;
req.abort();
});
}
......@@ -43,18 +43,6 @@ export declare class Promise {
public cancel():void;
}
export interface IXHROptions {
type?:string;
url?:string;
user?:string;
password?:string;
responseType?:string;
headers?:any;
customRequestInitializer?:(req:any)=>void;
data?:any;
}
export declare function xhr(options:IXHROptions):TPromise<XMLHttpRequest>;
export declare function decoratePromise(promise:Promise, successCallback?:ValueCallback, errorCallback?:ErrorCallback):Promise;
export declare function decoratePromise<T>(promise:TPromise<T>, successCallback?:TValueCallback<T>, errorCallback?:ErrorCallback):TPromise<T>;
......
......@@ -5,7 +5,8 @@
'use strict';
import URI from 'vs/base/common/uri';
import {TPromise, xhr, IXHROptions} from 'vs/base/common/winjs.base';
import {TPromise} from 'vs/base/common/winjs.base';
import {xhr, IXHROptions} from 'vs/base/common/network';
import strings = require('vs/base/common/strings');
import Timer = require('vs/base/common/timer');
import Async = require('vs/base/common/async');
......
......@@ -5,7 +5,8 @@
'use strict';
import { TPromise, xhr } from 'vs/base/common/winjs.base';
import { TPromise } from 'vs/base/common/winjs.base';
import { xhr } from 'vs/base/common/network';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IRequestService } from 'vs/platform/request/common/request';
......
......@@ -5,7 +5,8 @@
'use strict';
import { TPromise, Promise, xhr } from 'vs/base/common/winjs.base';
import { TPromise, Promise } from 'vs/base/common/winjs.base';
import { xhr } from 'vs/base/common/network';
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
import strings = require('vs/base/common/strings');
import nls = require('vs/nls');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册