Skip to content

Instantly share code, notes, and snippets.

@bluejava
bluejava / Soon
Last active Jun 30, 2020
A Very Fast Javascript thread yield (see blog posting)
View Soon
// See http://www.bluejava.com/4NS/Speed-up-your-Websites-with-a-Faster-setTimeout-using-soon
// This is a very fast "asynchronous" flow control - i.e. it yields the thread and executes later,
// but not much later. It is far faster and lighter than using setTimeout(fn,0) for yielding threads.
// Its also faster than other setImmediate shims, as it uses Mutation Observer and "mainlines" successive
// calls internally.
// WARNING: This does not yield to the browser UI loop, so by using this repeatedly
// you can starve the UI and be unresponsive to the user.
// Note: For an even faster version, see https://gist.github.com/bluejava/b3eb39911da03a740727
var soon = (function() {
@bluejava
bluejava / Soon (Fast)
Last active Jan 10, 2020
Insanely Fast Javascript thread Yield (see blog post)
View Soon (Fast)
// See http://www.bluejava.com/4NS/Speed-up-your-Websites-with-a-Faster-setTimeout-using-soon
// This is a very fast "asynchronous" flow control - i.e. it yields the thread and executes later,
// but not much later. It is far faster and lighter than using setTimeout(fn,0) for yielding threads.
// Its also faster than other setImmediate shims, as it uses Mutation Observer and "mainlines" successive
// calls internally.
// WARNING: This does not yield to the browser UI loop, so by using this repeatedly
// you can starve the UI and be unresponsive to the user.
// This is an even FASTER version of https://gist.github.com/bluejava/9b9542d1da2a164d0456 that gives up
// passing context and arguments, in exchange for a 25x speed increase. (Use anon function to pass context/args)
var soon = (function() {
@bluejava
bluejava / example1.js
Last active Jun 27, 2019
Example 1 for Medium post
View example1.js
Zousan.evaluate(
{ name: "username", value: "glenn" },
{ name: "score", value: 45 }
).then(function(ob) {
console.log("Hello " + ob.username + ". Your score is " + ob.score)
})
@bluejava
bluejava / Example2.js
Last active Jun 27, 2019
Example 2 for Medium Post
View Example2.js
function getScore() { return 45 }
function double(x) { return x * 2 }
Zousan.evaluate(
{ name: "username", value: "glenn" },
{ name: "score", value: getScore },
{ name: "newScore", value: double, deps: [ "score" ] }
).then(function(ob) {
console.log("Hello " + ob.username + ". Your new score is " + ob.newScore)
})
@bluejava
bluejava / Example3.js
Last active Jun 27, 2019
Example 3 for Medium Post
View Example3.js
function getUser(name) { /* returns Promise of user object */ }
function getFavorites(user) { /* returns Promise of favorites array */ }
Zousan.evaluate(
{ name: "username", value: "glenn" },
{ name: "user", value: getUser, deps: [ "username" ] },
{ name: "favs", value: getFavorites, deps: [ "user" ] }
).then(function(ob) {
renderUserFavs(ob.user, ob.favs)
})
@bluejava
bluejava / Example4.js
Last active Jun 27, 2019
Example 4 for Medium Post
View Example4.js
Zousan.evaluate(
{ name: "username", value: "glenn" },
{ name: "user", value: getUser, deps: [ "username" ] },
{ name: "favs", value: getFavorites, deps: [ "user" ] },
{ value: renderUser, deps: [ "user" ] },
{ value: renderUserFavs, deps: [ "user", "favs" ] }
)
@bluejava
bluejava / Example5.js
Last active Jun 27, 2019
Example 5 for Medium Post
View Example5.js
Zousan.evaluate(
{ name: "username", value: "glenn" },
{ name: "user", value: getUser, deps: [ "username" ] },
{ name: "favs", value: getFavorites, deps: [ "user" ] },
{ name: "userRenderer", value: renderUser, deps: [ "user" ] },
{ value: renderUserFavs, deps: [ "userRenderer", "favs" ] }
)
@bluejava
bluejava / Markov Text Generator
Created Feb 21, 2016
Demonstration of a Markov Text Generator to create a Sarah Palin endorsement for Donald Trump.
View Markov Text Generator
// Demonstration of a Markov Text Generator to create a Sarah Palin endorsement for Donald Trump.
// See blog post at http://www.bluejava.com/4P9/Sarah-Palin-vs-12-lines-of-JavaScript
var text = "“Thank you so much. It’s so great to be here in Iowa. We’re here just thawing out. Todd and I and a couple of our friends here from Alaska, lending our support for the next president of our great United States of America, Donald J. Trump. “Mr. Trump, you’re right, look back there in the press box. Heads are spinning, media heads are spinning. This is going to be so much fun. “Are you ready to make America great again? We all have a part in this. We all have a responsibility. Looking around at all of you, you hardworking Iowa families. You farm families, and teachers, and teamsters, and cops, and cooks. You rockin’ rollers. And holy rollers! All of you who work so hard. You full-time moms. You with the hands that rock the cradle. You all make the world go round, and now our cause is one. “When asked why I would jump
@bluejava
bluejava / Example5-vanilla.js
Last active Nov 3, 2016
Example 5 Vanilla for Medium Post
View Example5-vanilla.js
var username = "glenn"
getUser(username)
then(function(user) {
renderUser(user)
.then(function(userRenderer) {
getFavorites(user)
.then(function(favs) { renderUserFavs(userRenderer, favs) })
})
})
@bluejava
bluejava / Example4-vanilla.js
Created Nov 3, 2016
Example 4 Vanilla for Medium Post
View Example4-vanilla.js
var username = "glenn"
getUser(username)
then(function(user) {
getFavorites(user)
.then(function(favs) { renderUserFavs(user,favs) })
renderUser(user)
})
You can’t perform that action at this time.