Consider the following code:
promise = Promise.new(function(resolve, reject)
resolve(delayed_resolve(3, "from delayed"))
resolve("from test")
end)
promise:next(function(result)
print(result)
end)
Where delayed_resolve returns a promise resolved with its second argument after specified delay.
From promise spec (and nodejs implementation), the correct behavior is to print from delayed after 3 seconds. But from test is printed immediately instead.
Similar NodeJS code:
function delay(time, val) {
return new Promise(function (resolve, _) {
setTimeout(function () {
resolve(val);
}, time * 1000);
});
}
new Promise(function (resolve, reject) {
resolve(delay(3, "from delay"));
resolve("from test");
}).then(function (val) {
console.log(val);
});
Consider the following code:
Where
delayed_resolvereturns a promise resolved with its second argument after specified delay.From promise spec (and nodejs implementation), the correct behavior is to print
from delayedafter 3 seconds. Butfrom testis printed immediately instead.Similar NodeJS code: