2016-10-13 4 views
0

Я использую функцию стрелки для передачи параметра какой-либо другой функции. Это выглядит вроде как это:используя функцию js arrow как параметр

someFunction(parameter1,() => { 
    return model.associatedGroups.filter(group => { 
    return group.isAssociated === true; 
    }) 
}, parameter3) 

, но когда я ее отладки, я получаю функцию по методу я звоню вместо фильтрованной массива. Как мне написать его, чтобы получить отфильтрованный массив?

+0

Функция стрелка является функцией. Вы не получаете отфильтрованный массив, пока 'someFunction' не вызовет обратный вызов. – Barmar

+0

Почему вы используете функцию стрелки, если вы не хотите, чтобы она была функцией? – Barmar

+0

, но я думаю, что могли бы быть случаи, если бы вы могли использовать функцию стрелки для возврата значения, и это будет иметь смысл, нет? в этих случаях вы бы IIFE свою функцию, чтобы получить значение? – Joe

ответ

1

Вы просто передаете ссылку на функцию.

Вызов функции в месте, чтобы передать ее результат в качестве аргумента:

someFunction(
    parameter1, 
    (() => model.associatedGroups.filter(group => group.isAssociated === true))(), 
    parameter3 
) 

Или просто передать результат фильтра:

someFunction(
    parameter1, 
    model.associatedGroups.filter(group => group.isAssociated === true), 
    parameter3 
) 

Или передать функции, как вы уже и вызов его в пределах someFunction, чтобы получить его результат.

+1

Нет смысла использовать IIFE в таком аргументе. Просто вызовите 'model.associatedGroups.filter()' в аргументе. – Barmar

+0

@ Бармар у'р абсолютно прав ... Как я его не видел? – Joe

0

Это потому, что вы передаете функцию, а не массив. Если вы хотите получить результат этой функции, вы должны ее вызвать.

Кроме того, с функцией стрелки вам не нужно указывать `return, если у вас есть только одна строка.

Попробуйте с этим:

someFunction(parameter1, (() => model.associatedGroups.filter(group => group.isAssociated === true))(), parameter3) 

Edit: это :) прийти

someFunction(parameter1, model.associatedGroups.filter(group => group.isAssociated === true), parameter3)