所以下一个函数应该在预先存储的数组中搜索,在chrome存储中,某个索引等于当前日期:
function comparingDates(fn) {
var currentDate = new Date();
var j;
chrome.storage.sync.get("storeDates", function comparing(items) {
if (!chrome.runtime.error) {
var arrayDates = items.storeDates;
j = arrayDates.findIndex(x => x.date == currentDate.getDate());
console.log(j);
fn(j);
};
});
};
使用fn
作为发送此回调的相应索引的函数:
comparingDates(function (l1) {
if (!l1) {
console.log("error");
} else {
currentDay = l1;
console.log("succes");
};
之前声明变量currentDay
。
运行函数并发送值后,采用l1
未定义的条件。
如果错误发生,很难掌握如何处理异步函数。并且对它进行一些搜索,没有为实际参考提供好的例子。
答案 0 :(得分:1)
findIndex返回-1表示未找到,如果你要做
if (-1) console.log("Is Truthy")
你会得到控制台线。如果项目在第一个索引(也就是0)中,那么检查也会失败。
你应该检查-1,而不是真正的。
comparingDates(function (l1) {
if (l1===-1) {
console.log("error");
} else {
currentDay = l1;
console.log("success");
}
});
如果你这么说
var l1;
comparingDates(function (l1) {
if (l1===-1) {
console.log("error");
} else {
currentDay = l1;
console.log("success");
}
});
console.log(l1) <-- is undefined
问题就是你在订购比萨饼时遇到的问题,当你挂断电话时,你会尝试吃披萨。函数后面的代码不会等待回调运行。这就是为什么我们有回调等待订单交付。逻辑需要在那里完成。