Javascript 异步数据库调用使函数不工作 函数getNextID(编号){ var-maxKey=0; 编号=编号类型!==“未定义”?编号:1; db.from('contributions')。select('id')。list()。done(函数(记录){ 记录。forEach(功能(项目){ 如果(maxKey

Javascript 异步数据库调用使函数不工作 函数getNextID(编号){ var-maxKey=0; 编号=编号类型!==“未定义”?编号:1; db.from('contributions')。select('id')。list()。done(函数(记录){ 记录。forEach(功能(项目){ 如果(maxKey,javascript,asynchronous,ydn-db,Javascript,Asynchronous,Ydn Db,我使用的是ydn db 这是一个用于处理本地存储的类-它异步工作,而不是AJAX 我想做的是获取表上的下一个ID(但这一点实际上是不相关的) 我遇到的问题是: a) 我是个白痴,我的maxKey b) 异步调用把一切都搞砸了 此时函数总是返回“未定义”-但是如果我用console.log(maxKey)替换return工作正常 有人能告诉我如何修复这个函数以便正确调用它吗 (这是一个示例函数,因此尽管可以使用任何用于查找下一个键的内置函数,但我确实需要知道如何从函数中返回异步项!) 我希望这是清

我使用的是ydn db

这是一个用于处理本地存储的类-它异步工作,而不是AJAX

我想做的是获取表上的下一个ID(但这一点实际上是不相关的)

我遇到的问题是:

a) 我是个白痴,我的
maxKey

b) 异步调用把一切都搞砸了

此时函数总是返回“未定义”-但是如果我用
console.log(maxKey)替换return工作正常

有人能告诉我如何修复这个函数以便正确调用它吗

(这是一个示例函数,因此尽管可以使用任何用于查找下一个键的内置函数,但我确实需要知道如何从函数中返回异步项!)

我希望这是清楚的-任何问题-开火

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);

});

}
因为您的代码是异步的,所以除了承诺或使用延续(回调)之外,您不能从getNextID返回任何内容

因为您的代码是异步的,所以除了承诺或使用延续(回调)之外,您不能从getNextID返回任何内容

因为您的代码是异步的,所以除了承诺或使用延续(回调)之外,您不能从getNextID返回任何内容


由于您的代码是异步的,因此除了承诺或使用延续(回调)之外,您不能从getNextID返回任何内容。

由于主键是排序的,您只需获取第一个键即可获得最大键:

getNextID(number,function(maxKey){
   // continue the code here.
});

由于主键已排序,您只需使用第一个键即可获得最大键:

getNextID(number,function(maxKey){
   // continue the code here.
});

由于主键已排序,您只需使用第一个键即可获得最大键:

getNextID(number,function(maxKey){
   // continue the code here.
});

由于主键已排序,您只需使用第一个键即可获得最大键:

getNextID(number,function(maxKey){
   // continue the code here.
});


请阅读。问题是b,您必须从
getNextID
返回一个承诺。嗨,Felix-这不是AJAX,而是本地存储-为了清楚起见,我将回答我的问题!没关系。异步是异步的,回调、承诺是每个异步函数的解决方案。谢谢Felix-你是对的,我只是没有理解你想要表达的意思!是的,从标题上看,这不是一个适用于所有异步情况的解决方案。我考虑更改问题/答案,使其更通用,但还没有找到时间。请阅读。问题是b,您必须从
getNextID
返回一个承诺。嗨,Felix-这不是AJAX,而是本地存储-为了清楚起见,我将回答我的问题!没关系。异步是异步的,回调、承诺是每个异步函数的解决方案。谢谢Felix-你是对的,我只是没有理解你想要表达的意思!是的,从标题上看,这不是一个适用于所有异步情况的解决方案。我考虑更改问题/答案,使其更通用,但还没有找到时间。请阅读。问题是b,您必须从
getNextID
返回一个承诺。嗨,Felix-这不是AJAX,而是本地存储-为了清楚起见,我将回答我的问题!没关系。异步是异步的,回调、承诺是每个异步函数的解决方案。谢谢Felix-你是对的,我只是没有理解你想要表达的意思!是的,从标题上看,这不是一个适用于所有异步情况的解决方案。我考虑更改问题/答案,使其更通用,但还没有找到时间。请阅读。问题是b,您必须从
getNextID
返回一个承诺。嗨,Felix-这不是AJAX,而是本地存储-为了清楚起见,我将回答我的问题!没关系。异步是异步的,回调、承诺是每个异步函数的解决方案。谢谢Felix-你是对的,我只是没有理解你想要表达的意思!是的,从标题上看,这不是一个适用于所有异步情况的解决方案。我考虑过修改问题/答案,使其更通用,但还没有找到时间。谢谢!我真是个白痴——这种承诺的东西总是让我抓狂!从带有回调函数的函数中回调显然太多了,我的大脑无法处理!我还不能接受,但我能接受的时候会接受。谢谢!我真是个白痴——这种承诺的东西总是让我抓狂!从带有回调函数的函数中回调显然太多了,我的大脑无法处理!我还不能接受,但我能接受的时候会接受。谢谢!我真是个白痴——这种承诺的东西总是让我抓狂!从带有回调函数的函数中回调显然太多了,我的大脑无法处理!我还不能接受,但我能接受的时候会接受。谢谢!我真是个白痴——这种承诺的东西总是让我抓狂!从带有回调函数的函数中回调显然太多了,我的大脑无法处理!我现在还不能接受,但我会接受的。谢谢kyaw tun-你的库(它是你的或者你参与的对吧?)很棒,尽管我可能是蛮力的,因为我是一个有点呆板的人,从来没有使用过索引数据库等。所以我从零开始学习所有这些!谢谢kyaw tun-你的库(它是你的或者你参与的对吧?)很棒,尽管我可能是蛮力地强迫很多功能,因为我有点呆板,从来没有使用过索引数据库等。所以我从零开始学习所有这些!谢谢kyaw tun-你的库(它是你的或者你参与的对吧?)很棒,尽管我可能是蛮力地强迫很多功能,因为我是一个有点呆头呆脑的人