2015-07-06 2 views
1

У меня есть массив со значениями, и я хочу запустить одну функцию с обратным вызовом с каждым из значений массива в качестве аргумента последовательно. Смысл, запустите функцию с значением первой ячейки, когда она закончит выполнение функции со значением ячейки второй и т. Д. Я попытался с Q, и я не могу найти способ сделать это с помощью аргументов, он продолжает вызывать функцию.Выполнять функцию несколько раз с разными аргументами последовательно в узле Js

Пример:

var array = [1,2,3,4,5] 

var func1 = function(num){ 
    setTimeout(function(){ 
    console.log(num+num); 
    }, 3000); 
} 

Я хочу, чтобы запустить функцию с 1 в качестве аргумента, когда он закончит работать с 2 в качестве аргумента и т.д.

Пожалуйста, обратите внимание, что я хочу, чтобы запустить его последовательно.

Спасибо!

ответ

0

Использование array.map

var array = [1,2,3,4,5] 

var func1 = function(num){ 
    console.log(num+num); 
} 
array.map(func1) 
+1

Есть ли причина для использования .map over .forEach? (все, что я вижу, это более короткое имя метода) – ben

+0

Функция имеет обратный вызов, я забыл упомянуть об этом – Biri

0

Просто используйте Foreach

var array = [1,2,3,4,5] 
var func1 = function(num){ 
    console.log(num+num); 
} 
array.forEach(func1); 

И с Promise somethig как (не рабочий код, просто давая идеи):

var array = [1,2,3,4,5] 
var func1 = function(num){ 
    var p = new Deferred(); 
    setTimeout(function(){ 
     console.log(num+num); 
     p.resolve(num+num) 
    }, 3000); 
    return p; 
} 
var count = 0; 
function next() { 
    func1(array[count++]).then(next); 
} 
+0

Функция имеет обратный вызов, я забыл упомянуть об этом – Biri

+0

Вам нужно использовать несколько обещаний и связать их – ben

+0

Можете ли вы предоставить фрагмент кода? Я попытался сделать это с Q. – Biri

Смежные вопросы