Javascript 如何从事件中获取返回值?

Javascript 如何从事件中获取返回值?,javascript,function,events,return-value,Javascript,Function,Events,Return Value,我找不到解决这个问题的合适方法,所以我在这里问。 我正在使用indexedDB,这并不是真正相关的,只是为了更好地理解而提及它。我有一个函数告诉我一个对象是否已经存储在indexedDB中。如果是,将返回对象的版本,否则返回值-1 Javascript函数如下所示: 函数dbGameVersion(键){ var transaction=db.transaction([“文件”]); var objectStore=transaction.objectStore(“文件”); var requ

我找不到解决这个问题的合适方法,所以我在这里问。 我正在使用indexedDB,这并不是真正相关的,只是为了更好地理解而提及它。我有一个函数告诉我一个对象是否已经存储在indexedDB中。如果是,将返回对象的版本,否则返回值-1

Javascript函数如下所示:

函数dbGameVersion(键){
var transaction=db.transaction([“文件”]);
var objectStore=transaction.objectStore(“文件”);
var request=objectStore.get(key);
var版本=0;
//由objectStore.get(键)触发;
request.onsuccess=函数(事件){
if(请求结果){
//返回存储的游戏版本
version=request.result.file.game[0]。版本;
}否则{
//游戏尚未在数据库中
版本=-1;
}
};
返回版本;

}
您不能返回版本值,但必须保证:

函数dbGameVersion(键){
var transaction=db.transaction([“文件”]);
var objectStore=transaction.objectStore(“文件”);
var版本=0;
返回新承诺(函数(解析){
var request=objectStore.get(key);
request.onsuccess=函数(事件){
if(请求结果){
//返回存储的游戏版本
version=request.result.file.game[0]。版本;
}否则{
//游戏尚未在数据库中
版本=-1;
}
决议(版本);
};        
});
}
//然后,您可以按如下方式使用此功能:
dbGameVersion(键)。然后(函数(版本){
//您可以在此处获得版本值:
console.log(版本);
});

您能告诉我,您在哪里调用该事件处理程序函数,即在哪里接收返回值吗?嗯,没有任何地方,没有正式的解决方案,你不能从事件处理程序返回。@Teemu抱歉,是的,indexedDB有点特别。onsuccess事件由“var request=objectStore.get(key);”触发。带有增强注释的示例。Tnx Faly,工作起来像个符咒!没有意识到承诺并了解它!