2017-05-28 8 views
0

私は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'); 
    }; 



    }); 



} 

私はサービスワーカー内でこれを実行しています。必要はそのためにありません - あなたはnew Promise内部の約束を返す関数をラップしている、すなわち

+2

あなたの最初から返された値に解決されます約束ですあなたが最初の約束を決して解決しないので決して決して解決しない - 約束は馬鹿ではない:p - '関数checkUrlLinkはどんな値も返さない' - はい、それは約束を返す –

+1

'checkUrlLink'は、解決されました。値を返しません。 – pacifier21

+3

try - 'var promise = checkUrlLink(send_to_url、event).then(function(url_link){ console.log(promisse '+ url_linkのURLリンク); return clients.openWindow(url_link); } –

答えて

2

あなたはここに

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

を約束コンストラクタアンチパターンを使用しています。しかし、あなたがいずれかの解決を呼び出すことはありませんので、それはそのコード

上記のコードで2つの問題がありますが、単純に

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

が今約束であるclients.openWindow(url_link);

関連する問題