Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use setTimeout for "forced" async. #239

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions addon-test-support/setup-context.js
@@ -1,4 +1,4 @@
import { run, next } from '@ember/runloop';
import { run } from '@ember/runloop';
import { set, setProperties, get, getProperties } from '@ember/object';
import buildOwner from './build-owner';
import { _setupPromiseListeners } from './ext/rsvp';
Expand Down Expand Up @@ -61,7 +61,7 @@ export default function(context, options = {}) {

return new Promise(resolve => {
// ensure "real" async and not "fake" RSVP based async
next(() => {
setTimeout(() => {
let resolver = options.resolver;
let owner = buildOwner(resolver);

Expand Down Expand Up @@ -111,6 +111,6 @@ export default function(context, options = {}) {
_setupPromiseListeners();

resolve(context);
});
}, 0);
});
}
20 changes: 10 additions & 10 deletions addon-test-support/setup-rendering-context.js
@@ -1,5 +1,5 @@
import { guidFor } from '@ember/object/internals';
import { run, next } from '@ember/runloop';
import { run } from '@ember/runloop';
import { Promise } from 'rsvp';
import Ember from 'ember';
import global from './global';
Expand Down Expand Up @@ -50,7 +50,7 @@ export default function(context) {

return new Promise(resolve => {
// ensure "real" async and not "fake" RSVP based async
next(() => {
setTimeout(() => {
let { owner } = context;

let dispatcher = owner.lookup('event_dispatcher:main') || Ember.EventDispatcher.create();
Expand Down Expand Up @@ -98,7 +98,7 @@ export default function(context) {
return new Promise(function asyncRender(resolve) {
// manually enter async land, so that rendering itself is always async (even though
// Ember <= 2.18 do not require async rendering)
next(function asyncRenderSetup() {
setTimeout(function asyncRenderSetup() {
templateId += 1;
let templateFullName = `template:-undertest-${templateId}`;
owner.register(templateFullName, template);
Expand Down Expand Up @@ -134,7 +134,7 @@ export default function(context) {
//
// * [view:outlet](https://github.com/emberjs/ember.js/blob/f94a4b6aef5b41b96ef2e481f35e07608df01440/packages/ember-glimmer/lib/views/outlet.js#L129-L145) manually dirties its own tag upon `setOutletState`
// * [backburner's custom end hook](https://github.com/emberjs/ember.js/blob/f94a4b6aef5b41b96ef2e481f35e07608df01440/packages/ember-glimmer/lib/renderer.js#L145-L159) detects that the current revision of the root is no longer the latest, and triggers a new rendering transaction
next(function asyncUpdateElementAfterRender() {
setTimeout(function asyncUpdateElementAfterRender() {
// ensure the element is based on the wrapping toplevel view
// Ember still wraps the main application template with a
// normal tagged view
Expand All @@ -145,8 +145,8 @@ export default function(context) {
element = document.querySelector('#ember-testing > .ember-view');

resolve();
});
});
}, 0);
}, 0);
});
};

Expand All @@ -170,7 +170,7 @@ export default function(context) {
return new Promise(function async_clearRender(resolve) {
element = undefined;

next(function async_clearRender() {
setTimeout(function async_clearRender() {
toplevelView.setOutletState({
render: {
owner,
Expand All @@ -185,12 +185,12 @@ export default function(context) {
});

// RE: next usage, see detailed comment above
next(resolve);
});
setTimeout(resolve, 0);
}, 0);
});
};

resolve(context);
});
}, 0);
});
}
6 changes: 3 additions & 3 deletions addon-test-support/teardown-context.js
@@ -1,4 +1,4 @@
import { run, next } from '@ember/runloop';
import { run } from '@ember/runloop';
import { _teardownPromiseListeners } from './ext/rsvp';
import { _teardownAJAXHooks } from './settled';
import { Promise } from 'rsvp';
Expand All @@ -7,7 +7,7 @@ import Ember from 'ember';
export default function(context) {
return new Promise(resolve => {
// ensure "real" async and not "fake" RSVP based async
next(() => {
setTimeout(() => {
let { owner } = context;

_teardownPromiseListeners();
Expand All @@ -17,6 +17,6 @@ export default function(context) {
Ember.testing = false;

resolve(context);
});
}, 0);
});
}
6 changes: 3 additions & 3 deletions addon-test-support/teardown-rendering-context.js
@@ -1,12 +1,12 @@
import { guidFor } from '@ember/object/internals';
import { run, next } from '@ember/runloop';
import { run } from '@ember/runloop';
import { Promise } from 'rsvp';
import { RENDERING_CLEANUP } from './setup-rendering-context';

export default function(context) {
return new Promise(resolve => {
// ensure "real" async and not "fake" RSVP based async
next(() => {
setTimeout(() => {
let guid = guidFor(context);
let destroyables = RENDERING_CLEANUP[guid];

Expand All @@ -16,6 +16,6 @@ export default function(context) {

delete RENDERING_CLEANUP[guid];
resolve(context);
});
}, 0);
});
}