有沒有辦法在沒有全局變量的函數內等待異步操作?函數內部的JavaScript延遲,沒有全局變量
我知道,如果我有一個全球性的,我可以延遲這樣的:
var flag = 0; // global
function wait_for_convert() {
if(!flag) {
setTimeout(wait_for_convert, 50);
}
else {
request.send(data);
}
}
wait_for_convert();
但是,如果我有很多異步操作,這是非常討厭把所有這些等待的全球範圍。
比如我需要返回數據的功能,從異步請求,就像這樣:
function append_resized(resized_images, name, file)
{
var reader = new FileReader();
reader.onload = function(e) {
var img = document.createElement("img");
img.onload = function() {
var dataurl = dataurl_resize(this);
// WOULD BE NICE TO RETURN THIS RESULT
// LIKE THIS: return {'blob': dataURLtoBlob(dataurl), 'filename': file.name};
resized_images[name] = {'blob': dataURLtoBlob(dataurl), 'filename': file.name};
};
img.onerror = function() {
resized_images[name] = undefined;
}
img.src = e.target.result;
};
reader.readAsDataURL(file);
}
也可能是有庫鎖定異步請求同步,還是其他什麼東西?
看看IcedCoffeeScript:http://maxtaco.github.io/coffee-script/ – Chris