2017-02-06 2 views
0

У меня есть следующие функции для синтаксического анализа массива и возвращать только определенные элементы:Сохранить переменную глобальной переменной во время вызова функции

function fetchLogs(logs) { 
    var arr = logs.value; 
    var res = arr.reduce((a, b) => { 
     if (b.level === 'INFO') { 
      a.push(b.message.split(" ").pop().replace(/"/g, "")) 
     } 
     return a; 
    }, []); 
    console.log("function", res); 
    return res; // Is this return right? 
} 

Использование функции, чтобы получить журналы браузер вернулся (Браузер и браузер B) и проверить соответствие совпадений.

Так что мой тест выглядит, что

it('should return logs from browser B', function(done) { 
    browserB 
     .log('browser') 
     .then(function(logs) { 
     fetchLogs(logs); 
     done(); 
     }) 
    .catch(function(e) { 
     done(e); 
    }) 
}); 

И в конце концов, я хочу, чтобы сравнить эти Массивы

it('should compare browser logs', function() { 
    expect(logsA).to.have.all.members(logsB); 
}); 

Вопрос здесь:

Как я могу сохранить переменную res от функции до моей ранее объявленной глобальной переменной l ogsB внутри, когда я вызываю fetchLogs (журналы) функция? Нужен ли мне ответ или обещание?

Является ли также функция надлежащим образом с возвратом?

+2

если вы используете 'вар fetchResult = fetchLogs()', то вы будете иметь журналы в виде вар вы можете делать все, что с. (например, установить глобальный или использовать его в качестве параметра для функции, которая запускает тест. Таким образом, ваше возвращение правильное, если это на самом деле то, что вы пытаетесь сделать. Рассматривая код, вы, вероятно, хотите две переменные logsA и logsB которые находятся в том же объеме, что и функции, поэтому эти функции могут видеть logsA и logsB. – Shilly

+0

@Shilly Работает как шарм, и я понятия не имею, почему я об этом не думал :) – mrks

ответ

0

Простое решение, которое работает для меня:

var fetchResult = fetchLogs(); 
Смежные вопросы