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');
};
});
}
我是一個服務人員內部執行此操作。有沒有必要的 -
你的第一個返回值一個承諾承諾永遠不會解決,因爲你永遠不會解決你的第一個承諾 - 承諾不是majick:p - '但函數checkUrlLink不返回任何值 - 是的,它返回一個承諾 –
'checkUrlLink'返回一個Promise實例,它必須是解決。它不會返回一個值。 – pacifier21
嘗試 - 'var promise = checkUrlLink(send_to_url,event).then(function(url_link){ console.log('URL LINK in promisse'+ url_link); return clients.openWindow(url_link); };' –