Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺不解析且不返回预期值:_Javascript_Promise_Service Worker - Fatal编程技术网

Javascript 承诺不解析且不返回预期值:

Javascript 承诺不解析且不返回预期值:,javascript,promise,service-worker,Javascript,Promise,Service Worker,我试图将IndexedDB改编为承诺,但函数checkUrlLink不返回任何值。我怎样才能兑现这个承诺 这是我的代码: var promise = new Promise(function(resolve) { return checkUrlLink(send_to_url, event); }).then(function(url_link) { console.log('URL LINK in promisse' + url_link);

我试图将IndexedDB改编为承诺,但函数checkUrlLink不返回任何值。我怎样才能兑现这个承诺

这是我的代码:

var promise = new Promise(function(resolve) {
        return checkUrlLink(send_to_url, event);
    }).then(function(url_link) {
        console.log('URL LINK in promisse' + url_link);
        return clients.openWindow(url_link);
    });


function checkUrlLink(send_to_url, event) {

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

    var request = indexedDB.open('db', 1);
    var original_event = event;

    request.onsuccess = function (event) {
      //db = event.target.result;
      var url_link = "url_link";
      var store = request.result.transaction("uid", "readwrite").objectStore("uid");
      var getRequest = store.get(url_link);

      getRequest.onsuccess = function () {
        var result = getRequest.result;
        if (result) {
          url_link = result;
          //send_to_url(original_event,url_link);
          resolve(url_link);
        } else {
          url_link_value = self.registration.scope;
          store.add(url_link_value, url_link);
          //send_to_url(original_event, url_link_value);
          resolve(url_link_value);
        }
      };
    };

    request.onupgradeneeded = function (event) {
      var db = event.target.result;
      var store = db.createObjectStore('url_link');
    };



  });



}

我在一个服务人员内部执行此操作。

您在这里使用的是承诺构造函数反模式

var promise = new Promise(function(resolve) {
    return checkUrlLink(send_to_url, event);
}).then(function(url_link) {
    console.log('URL LINK in promisse' + url_link);
    return clients.openWindow(url_link);
});
i、 e.您正在包装一个函数,该函数在
新承诺
中返回一个承诺-不需要这样做。但是,您也从未调用resolve,因此该代码存在两个问题

上面的代码很简单

var promise = checkUrlLink(send_to_url, event)
.then(function(url_link) { 
    console.log('URL LINK in promisse' + url_link); 
    return clients.openWindow(url_link); 
};

现在promise是一个promise,它将解析为
clients.openWindow(url\u链接)返回的值

您在这里使用的是承诺构造函数反模式

var promise = new Promise(function(resolve) {
    return checkUrlLink(send_to_url, event);
}).then(function(url_link) {
    console.log('URL LINK in promisse' + url_link);
    return clients.openWindow(url_link);
});
i、 e.您正在包装一个函数,该函数在
新承诺
中返回一个承诺-不需要这样做。但是,您也从未调用resolve,因此该代码存在两个问题

上面的代码很简单

var promise = checkUrlLink(send_to_url, event)
.then(function(url_link) { 
    console.log('URL LINK in promisse' + url_link); 
    return clients.openWindow(url_link); 
};

现在promise是一个promise,它将解析为
clients.openWindow(url\u链接)返回的值

您的第一个承诺永远不会解决,因为您永远不会解决您的第一个承诺-承诺不重要:p-
但函数checkurlink不返回任何值
-是的,它返回一个承诺
checkurlink
返回一个必须解决的承诺实例。它不返回值。try-
var promise=checkUrlLink(发送到url,事件)。然后(函数(url链接){console.log('promisse中的url链接'+url链接);返回客户端。openWindow(url链接);};
你的第一个承诺永远不会解决,因为你永远不会解决你的第一个承诺-承诺不是majick:p-
但是函数checkurlink不返回任何值
-是的,它返回一个承诺
checkurlink
返回一个必须解决的承诺实例。它不返回值。try-
var promise=checkUrlLink(发送到url,事件)。然后(函数(url链接){console.log('url-link in-promisse'+url链接);返回客户端。openWindow(url链接);};