我希望能够得到一个从事件监听器回调中返回的值,这个值是在一个函数内部分配的,这样我就可以从主函数中返回同样的值,并将其存储在一个变量中。考虑这个例子。
function receiveThenReturn() {
request = something.request();
request.onsuccess = function () {
return request.result;
}
}
let value = receiveThenReturn();
我有一个 JavaScript
函数,向 IndexedDB
API并接收数据。我希望这些数据能够从我能够调用的函数中返回,以便调用 let quizzes = readQuizzes()
直接返回接收到的数据,但问题是返回语句在另一个函数里面,而这个函数是 onsuccess
. 我想让这个函数发送请求,接收并返回结果。这是我的实际代码。
function readQuizzes(error = defaultError) {
let transaction = database.transaction([quizStoreName], "readonly");
let quizStore = transaction.objectStore(quizStoreName);
let request = quizStore.openCursor();
request.onerror = error;
let quizzes = []
request.onsuccess = function (e) {
let cursor = e.target.result;
if (cursor) {
let quiz = cursor.value;
quizzes.push(quiz);
cursor.continue();
} else { return quizzes; }
}
}
我的目的是把回调函数中的变量存储到一个变量中去
试试 异步等待
async function receiveThenReturn() {
request = something.request();
request.onsuccess = await function () {
return request.result;
}
return request;
}
在这里,我做了一个你要找的例子。
const addEventListener = function(element, event, functionToDo){
element.addEventListener(event, function(event){
functionToDo(event, "some other parametres");
});
}
const btn = document.getElementById("someBtn");
addEventListener( btn, "click", function(e, message){
alert(message);
console.log( e );
});
<button id="someBtn">Click me To fire the Event!</button>