From e03b4724877eea37abd381efb53b1ef091f73e18 Mon Sep 17 00:00:00 2001 From: Edgar HIPP Date: Tue, 15 Oct 2019 12:09:59 +0200 Subject: [PATCH] Use setTimeout instead of setImmediate --- package-lock.json | 2 +- playground/app.js | 8 ++++---- src/utils.js | 2 +- test/ArrayField_test.js | 2 +- test/StringField_test.js | 4 ++-- test/utils_test.js | 2 +- webpack.config.prod.js | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 44b490b290..90756ce414 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-jsonschema-form", - "version": "1.7.0", + "version": "1.8.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/playground/app.js b/playground/app.js index c1d6bd8ea2..319ba909f4 100644 --- a/playground/app.js +++ b/playground/app.js @@ -122,7 +122,7 @@ class GeoPosition extends Component { onChange(name) { return event => { this.setState({ [name]: parseFloat(event.target.value) }); - setImmediate(() => this.props.onChange(this.state)); + setTimeout(() => this.props.onChange(this.state), 0); }; } @@ -231,7 +231,7 @@ class Selector extends Component { return event => { event.preventDefault(); this.setState({ current: label }); - setImmediate(() => this.props.onSelected(samples[label])); + setTimeout(() => this.props.onSelected(samples[label]), 0); }; }; @@ -372,10 +372,10 @@ class App extends Component { onThemeSelected = (theme, { stylesheet, editor }) => { this.setState({ theme, editor: editor ? editor : "default" }); - setImmediate(() => { + setTimeout(() => { // Side effect! document.getElementById("theme").setAttribute("href", stylesheet); - }); + }, 0); }; setLiveSettings = ({ formData }) => this.setState({ liveSettings: formData }); diff --git a/src/utils.js b/src/utils.js index 318e2c1469..79cb891ffd 100644 --- a/src/utils.js +++ b/src/utils.js @@ -962,7 +962,7 @@ export function setState(instance, state, callback) { instance.setState(state, callback); } else { instance.setState(state); - setImmediate(callback); + setTimeout(callback, 0); } } diff --git a/test/ArrayField_test.js b/test/ArrayField_test.js index 5704bb9067..f938ec2823 100644 --- a/test/ArrayField_test.js +++ b/test/ArrayField_test.js @@ -1183,7 +1183,7 @@ describe("ArrayField", () => { }, }); - return new Promise(setImmediate).then(() => + return new Promise(resolve => setTimeout(resolve, 0)).then(() => expect(comp.state.formData).eql([ "data:text/plain;name=file1.txt;base64,x=", "data:text/plain;name=file2.txt;base64,x=", diff --git a/test/StringField_test.js b/test/StringField_test.js index 97189b26bb..79350cb18f 100644 --- a/test/StringField_test.js +++ b/test/StringField_test.js @@ -1609,7 +1609,7 @@ describe("StringField", () => { }, }); - return new Promise(setImmediate).then(() => + return new Promise(resolve => setTimeout(resolve, 0)).then(() => expect(comp.state.formData).eql( "data:text/plain;name=file1.txt;base64,x=" ) @@ -1640,7 +1640,7 @@ describe("StringField", () => { }, }); - return new Promise(setImmediate).then(() => + return new Promise(resolve => setTimeout(resolve, 0)).then(() => expect(comp.state.formData).eql( "data:text/plain;name=" + uriEncodedValue + ";base64,x=" ) diff --git a/test/utils_test.js b/test/utils_test.js index a634f582fe..d51e2f46ef 100644 --- a/test/utils_test.js +++ b/test/utils_test.js @@ -1104,7 +1104,7 @@ describe("utils", () => { }); }); - it.only("should 'resolve' and stub out a schema which contains an `additionalProperties` with a type and definition", () => { + it("should 'resolve' and stub out a schema which contains an `additionalProperties` with a type and definition", () => { const schema = { type: "string", additionalProperties: { diff --git a/webpack.config.prod.js b/webpack.config.prod.js index 8a4b3eaafe..240b9396e1 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -15,7 +15,7 @@ module.exports = { new MonacoWebpackPlugin({ languages: ['json'] }), - new MiniCssExtractPlugin({filename: "styles.css", allChunks: true}), + new MiniCssExtractPlugin({ filename: "styles.css", allChunks: true }), new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify("production"),