我想等待发送一个回调,直到设置一个变量;
查看我的代码:
function getNick(callback) {
callback(nickName);
}
直到稍后在代码中才设置nickName变量..
这可能吗?
答案 0 :(得分:1)
您可能更好地更改代码,但我想您可以将回调函数存储到变量中,然后在代码中调用它(在设置nickName之后)
像这样的东西
var nickSetCallback;
function getNick(callback){
nickSetCallback = callback;
}
// .. More code ..
nick = "something";
if(nickSetCallback !== undefined)
nickSetCallback(nick);
答案 1 :(得分:1)
这闻起来很像坏代码。但是你可以使用计时器来完成它。
function getNick(callback) {
if(typeof nickName !== undefined) {
callback(nickName);
}
else {
setTimeout(getNick.bind(this, callback), 10);
}
}
然而,更简洁的方法是使用例如比如jQuery的Deferred
对象,你可以在其中添加回调,然后在设置昵称时触发它。
答案 2 :(得分:0)
使用像Knockout或Reactive Extensions这样的库,它提供了观察数据的机制。
以下是你在淘汰赛中的表现:
var nickName = ko.observable();
function getNick(callback) {
if (nickName()) {
callback(nickName());
}
else {
var d = nickName.subscribe(function (n) {
callback(n);
d.dispose();
});
}
};
// ...
getNick(function (value) { ... });
nickName("bannannas");