提交 42c718af 编写于 作者: A Alex Dima

setImmediate is not available in browsers

上级 b872c17e
......@@ -1082,7 +1082,7 @@ export function domContentLoaded(): TPromise<any> {
return new TPromise<any>((c, e) => {
const readyState = document.readyState;
if (readyState === 'complete' || (document && document.body !== null)) {
window.setImmediate(c);
platform.setImmediate(c);
} else {
window.addEventListener('DOMContentLoaded', c, false);
}
......
......@@ -6,6 +6,7 @@
'use strict';
import 'vs/css!./actionbar';
import * as platform from 'vs/base/common/platform';
import * as nls from 'vs/nls';
import * as lifecycle from 'vs/base/common/lifecycle';
import { TPromise } from 'vs/base/common/winjs.base';
......@@ -139,7 +140,7 @@ export class BaseActionItem implements IActionItem {
if (this.options && this.options.isMenu) {
this.onClick(e);
} else {
setImmediate(() => this.onClick(e));
platform.setImmediate(() => this.onClick(e));
}
});
......
......@@ -120,6 +120,20 @@ export const translationsConfigFile = _translationsConfigFile;
const _globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {} as any);
export const globals: any = _globals;
let _setImmediate: (callback: (...args: any[]) => void) => number = null;
export function setImmediate(callback: (...args: any[]) => void): number {
if (_setImmediate === null) {
if (globals.setImmediate) {
_setImmediate = globals.setImmediate.bind(globals);
} else if (typeof process !== 'undefined' && typeof process.nextTick === 'function') {
_setImmediate = process.nextTick.bind(process);
} else {
_setImmediate = globals.setTimeout.bind(globals);
}
}
return _setImmediate(callback);
}
export const enum OperatingSystem {
Windows = 1,
Macintosh = 2,
......
......@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { Promise as WinJSPromise } from './winjs.base';
import * as platform from 'vs/base/common/platform';
/**
* A polyfill for the native promises. The implementation is based on
......@@ -53,13 +54,13 @@ export class PolyfillPromise<T = any> implements Promise<T> {
if (!initializing) {
resolve(value);
} else {
setImmediate(resolve, value);
platform.setImmediate(() => resolve(value));
}
}, function (err) {
if (!initializing) {
reject(err);
} else {
setImmediate(reject, err);
platform.setImmediate(() => reject(err));
}
});
initializing = false;
......@@ -74,14 +75,14 @@ export class PolyfillPromise<T = any> implements Promise<T> {
if (!sync) {
onFulfilled(value);
} else {
setImmediate(onFulfilled, value);
platform.setImmediate(() => onFulfilled(value));
}
},
onRejected && function (err) {
if (!sync) {
onFulfilled(err);
} else {
setImmediate(onFulfilled, err);
platform.setImmediate(() => onFulfilled(err));
}
}
));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册