Skip to content

Instantly share code, notes, and snippets.

@bluejava
bluejava / Soon
Last active December 22, 2022 06:27
A Very Fast Javascript thread yield (see blog posting)
// 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 November 11, 2020 15:12
Insanely Fast Javascript thread Yield (see blog post)
// 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 June 27, 2019 01:21
Example 1 for Medium post
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 June 27, 2019 01:21
Example 2 for Medium Post
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 June 27, 2019 01:21
Example 3 for Medium Post
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 June 27, 2019 01:20
Example 4 for Medium Post
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 June 27, 2019 01:20
Example 5 for Medium Post
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 February 21, 2016 17:16
Demonstration of a Markov Text Generator to create a Sarah Palin endorsement for Donald Trump.
// 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 November 3, 2016 04:17
Example 5 Vanilla for Medium Post
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 November 3, 2016 03:51
Example 4 Vanilla for Medium Post
var username = "glenn"
getUser(username)
then(function(user) {
getFavorites(user)
.then(function(favs) { renderUserFavs(user,favs) })
renderUser(user)
})