Понять, как передать переменный желоб петли IIFE - PullRequest
0 голосов
/ 12 марта 2019

Извините за мой плохой английский, я новичок в node.js, я пытаюсь вернуть значение из своей функции. Я думаю, что должен использовать IIFE, но не могу понять, куда вставитьмой код, массив sx вне fs всегда пуст, заранее спасибо за помощь, следуйте за моим кодом

function find_wiki(stringa, callback){
    var sx=[];
    path='.\\uploads';
    fs.readdir(path, function(err, items) {
        for (let i=0; i<items.length; i++) {
            let file=items[i];
            let file_link=path+"\\"+items[i];
            if (file.match(/\.html/)){
                file=file.replace(/\.html/, '');
                fs.readFile(path+"\\"+items[i], "utf8", function(err, data) {
                    if (err) throw err;
                    data=striptags(data);
                    if (data.indexOf(stringa)>-1){
                        if (data.indexOf(stringa)<=10){
                            sx.push("<p><a class='link_wiki' href='"+file_link+"'>"+file+"</a><br/>"+data.substring(0,data.indexOf(stringa))+" <span style='font-weight:bold'>"+stringa+"</span> "+data.substring(data.indexOf(stringa)+stringa.length+1,data.indexOf(stringa)+stringa.length+11)+"</p>");
                        }else {
                            sx.push("<p><a class='link_wiki' href='"+file_link+"'>"+file+"</a><br/>"+data.substring(data.indexOf(stringa)-10,data.indexOf(stringa))+" <span style='font-weight:bold'>"+stringa+"</span> "+data.substring(data.indexOf(stringa)+stringa.length+1,data.indexOf(stringa)+stringa.length+11)+"</p>");
                        }
                    } 
                });
            }
        }
    });
    if (sx.length==0) 
        callback(null, "<p>Nessun dato trovato che soddisfi la ricerca</p>");
    else
    {
        var t='';
        for (x in sx){
            t+=sx[x]();
        }
        callback(null, t);
    }
}
...