使用回调分配可变值

时间:2017-06-26 16:08:00

标签: javascript google-chrome-extension callback

所以我的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;
        var i = 0;
        do {
            if (arrayDates[i].date == currentDate.getDate()) {
                j = i; // problemas al enviar el j
            };
            i++
        } while (!j);
        fn(j);
        };
    });
};
var currentDay;
 comparingDates(function (l1) {
    if (!l1) {
        console.log("error");
    } else {
        currentDay = l1;
        console.log("succes");
};

storeDates对象包含多个日期,与currentDate进行比较。当do / while循环找到匹配时,它假设为j赋值。但由于某些原因,当发送回调时,不会进行currentDay的分配。

我试图掌握回调理论并将其实现到我的代码中,但大多数我可以找到的示例只是打印结果而不是分配给某个值。 有关如何解决此问题的任何建议

1 个答案:

答案 0 :(得分:0)

在查看评论后,我找到问题的解决方案:

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;
    var j = arrayDates.findIndex(x => x.date == currentDate.getDate());
    console.log(j);
    fn(j);
        };
    });
};

var currentDay;
comparingDates(function (l1) {
if (!l1) {
    console.log("error");
} else {
    currentDay = l1;
    console.log("succes");
};