我想等待发送回调,直到设置变量;
看我的代码:
function getNick(callback) {
callback(nickName);
}
nickName 变量直到稍后在代码中才被设置..
这可能吗?
我想等待发送回调,直到设置变量;
看我的代码:
function getNick(callback) {
callback(nickName);
}
nickName 变量直到稍后在代码中才被设置..
这可能吗?
您可能最好更改您的代码,但我想您可以将回调函数存储到一个变量中,然后稍后在您的代码中调用它(在设置 nickName 之后)
像这样的东西
var nickSetCallback;
function getNick(callback){
nickSetCallback = callback;
}
// .. More code ..
nick = "something";
if(nickSetCallback !== undefined)
nickSetCallback(nick);
这闻起来很像糟糕的代码。但是您可以使用计时器来完成。
function getNick(callback) {
if(typeof nickName !== undefined) {
callback(nickName);
}
else {
setTimeout(getNick.bind(this, callback), 10);
}
}
但是,更简洁的方法是使用例如 jQuery 的Deferred
对象,您可以在其中添加回调,然后在设置昵称时触发它。
使用像 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");