如何在函数中返回结果包括异步回调函数? [JavaScript的]

时间:2018-04-13 05:48:04

标签: javascript asynchronous promise

我有一个函数返回如下的数组数据。

function get_info_tb(){
    var transaction = db.transaction(["mydb"]);
    var objectStore = transaction.objectStore("mydb");
    var request = objectStore.get("01");
    request.onerror = function(event) {
        alert("Unable to retrieve daa from database!");
    };
    request.onsuccess = function(event) {
        var data = request.result;
    };
    return data;
}

如何为get_info_tb返回request.onsuccess的可变数据?

我对javascript的异步有点问题。 请帮帮我,谢谢大家。!

1 个答案:

答案 0 :(得分:0)

您可以将其包装到Promise并返回。 Promise有两个功能 - resolvereject。您需要在成功调用resolvereject时使用适当的参数进行错误调用。之后与then链接,您可以获得这些结果。 then接受2个参数,一个用于成功,一个用于失败。您从resolvereject传递的数据将传递给then函数相应的回调。

function get_info_tb() {
   return new Promise((resolve, reject) => {

       var transaction = db.transaction(["mydb"]);
       var objectStore = transaction.objectStore("mydb");
       var request = objectStore.get("01");

       request.onerror = function(event) {
          reject();
       };

       request.onsuccess = function(event) {
          resolve(request.result);
       };

   });
}

并使用

get_info_tb().then(data => { /* This is the success */ }, 
                   err => { /* This is the error*/ },)