【发布时间】:2014-03-19 17:06:12
【问题描述】:
function getNextID(number){
var maxKey = 0;
number = typeof number !== 'undefined' ? number : 1;
db.from('contributions').select('id').list().done(function(records) {
records.forEach(function(item){
if (maxKey < item){
maxKey = item;
}
});
return(maxKey);
});
}
我正在使用 ydn-db
这是一个用于处理本地存储的类 - 它以异步方式工作,而不是 AJAX!
我想要做的是获取表上的下一个 ID(但那一点实际上是无关紧要的部分)。
我遇到的问题是:
a) 我是个白痴,我的范围错了maxKey
b) 异步调用搞砸了一切。
目前该函数总是返回 'undefined' - 但是如果我将 return 替换为 console.log(maxKey); 它工作正常。
谁能告诉我如何修复这个函数以便正确调用它?
(这是一个示例函数,因此尽管任何用于查找下一个键的内置函数都会受到赞赏,但我真的需要知道如何从函数中返回异步项!)
我希望这很清楚 - 任何问题 - 开火!
【问题讨论】:
-
请阅读How to return the response from an AJAX call?。问题是 b,你必须从
getNextID返回一个承诺。 -
嗨 Felix - 它不是 AJAX,它是本地存储 - 为了清楚起见,我会修改我的问题!
-
没关系。异步是异步和回调,promise 是每个异步函数的解决方案。
-
谢谢菲利克斯 - 你是对的,我只是没有明白你想要表达的意思!
-
是的,从标题中看不出这是适用于所有异步情况的解决方案。我考虑更改问题/答案以使其更通用,但还没有找到时间。
标签: javascript asynchronous ydn-db