function sleep (ms) {
var n = new EventReceiver();
setTimeout(n, ms);
n.wait->(); //block until n called
}
Now, we can sleep between printing without manual CPSing:
function writer() {
document.write("1");
sleep->(1000);
document.write("2");
}
writer();
This is close to what I wanted.. but not enough. Consider the following:
writer();
document.write("3");
I expected to see "1", and then, a second later, "123". Unfortunately, I saw "132"! The magic incantation would have been:
writer->();
document.write("3");
Essentially, the extension broke function encapsulation with respect to control. I can see merit to it -- rewriting becomes a local process. I want to truly and transparently write my asynchronous code in a synchronous manner (for a reason to be disclosed later): NarrativeJS helps clean up callback code while maintaining basic callback-style code structure (so you don't worry differently about a UI event handling mucking with state between callbacks), but it doesn't restore the synchronous semantics.
This is great... but I want the transformation to be global: sleep(), not sleep->(). Hopefully Strands fares better.
No comments:
Post a Comment