在[重复]中获取从事件监听器中返回的值。

问题描述 投票:0回答:2

我希望能够得到一个从事件监听器回调中返回的值,这个值是在一个函数内部分配的,这样我就可以从主函数中返回同样的值,并将其存储在一个变量中。考虑这个例子。

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

我的目的是把回调函数中的变量存储到一个变量中去

javascript function events return indexeddb
2个回答
0
投票

试试 异步等待

async function receiveThenReturn() {
    request = something.request();
    request.onsuccess = await function () {
        return request.result;
    }
return request;
}

0
投票

在这里,我做了一个你要找的例子。

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>
© www.soinside.com 2019 - 2024. All rights reserved.