问这个问题我的理论可能有点弱,所以请随时告诉我。
此代码是使用Kango 框架的浏览器插件的一部分。基本上我有代码生成一个随机字符串,它是一个用户ID。我还有另一个设置大 ole JSON 的函数。它看起来像这样:
function createJSON() {
data = {};
data["userID"] = generateID();
}
function generateID() {
kango.invokeAsync('kango.storage.getItem', 'userID', function(data) {
uid = data;
if (!uid) {
console.log("uid doesn't exist, creating uid!");
kango.invokeAsync('kango.storage.setItem', userID, function(data) { return data; });
} else {
console.log("uid found!: " + uid);
return uid;
}
return data;
});
}
kango.invokeAsync 文档在这里。我的理解是它的工作原理有点像异步 ajax 调用,从这个意义上说,当我尝试将其值分配给数据 [“userID”] 时,它不会及时返回。
我想我可以通过先执行 userID 调用然后使用它的回调(这里的术语有点模糊)继续添加到数据数组来解决这个问题。
我不知道这是否是正确的方法。如何获得要使用的异步函数的返回?