【发布时间】:2009-11-11 03:23:28
【问题描述】:
大家好 - 我在从我的 Javascript 回调函数之一正确获取返回值时遇到了一些困难,它看起来取决于竞争条件,但我不确定:
JSOBJ.container = function() {
return {
getName: function() {
var value;
companyfn.app.getInfo(callback);
function callback(foo) {
// alert("gets here");
if (foo.hadError()) {
alert("Error found!");
} else {
value = foo.getField(companyfn.app.Field.SUB_DOMAIN);
}
// alert('callback: ' + value);
}
return value;
}
}
}();
JSOBJ.main = function () {
return {
init: function() {
alert(JSOBJ.container.getName());
}
};
}();
在 JSOBJ.main.init();上面,我试图获得正确的值,但是当我运行我的代码时,我几乎总是得到未定义的返回值。当我在 JSOBJ.container.getName() 中取消注释我的警报语句时,getName 函数似乎在不调用回调的情况下运行,弹出警报,然后调用 getName 函数。所以这感觉像是一种竞争条件,我想说它与闭包有关,但我不确定如何正确实现它,所以它“等待”getField 返回一个值。有人可以帮忙吗?
【问题讨论】:
标签: javascript oop callback