gpt4 book ai didi

javascript - Promise 未解析且未返回预期值 :

转载 作者:行者123 更新时间:2023-12-01 03:36:35 25 4
gpt4 key购买 nike

我正在尝试使 IndexedDB 适应 promise ,但函数 checkUrlLink 不返回任何值。我该如何兑现这个 promise ?

这是我的代码:

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



});



}

我正在服务 worker 内部执行此操作。

最佳答案

您在这里使用 Promise 构造函数反模式

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

即您正在包装一个在 new Promise 中返回 Promise 的函数 - 没有必要这样做。但是,您也从不调用解析,因此该代码存在两个问题

上面的代码很简单

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

now Promise 是一个将解析为 clients.openWindow(url_link); 返回的值的 Promise;

关于javascript - Promise 未解析且未返回预期值 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44233059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com