2016-02-14 2 views
0

Когда я использовал это: getItemsPrice (AppID, имена, обратный вызов, [валюта]) метод вне async.waterfall, все работает, но когда я пытаюсь сделать так:метод не работает в async.waterfall

async.waterfall([ 
       function(callback) { 
        var w = inventory.map(function (e) { //parametr e przekazuje pojedynczy element tablicy 
         return e.market_hash_name; 
        }); 
        callback(null, w); 
       }, 
       function(w, callback) { 

        market.getItemsPrice(730, w, function(data) { 

         for(var i in names) { 
          console.log(names[i] + ' median price: ' + data[names[i]]['median_price']); 
         } 
         callback(null, 'three'); 
        }); 

       }, 

      ], function (err, result) { 

      }); 

Во втором массиве обратного вызова W есть данные, но market.ItemsPrice ничего не возвращает.

+1

Первая функция, похоже, не асинхронна, есть ли причина, по которой вы используете «водопад» здесь? – adeneo

+0

Сначала мне нужно изменить массив инвентаря на другой, а затем я должен передать этот «другой массив» на market.getItemPrice. Являются ли какие-либо функции асинхронной карты? – user3458952

ответ

0

Здесь не нужно асинхронно.

var w = inventory.map(function (e) { return e.market_hash_name; }); 
market.getItemsPrice(730, w, function(data) { 
// DO SOMETHING HERE 
}); 

1.inventory.map не является асинхронной функцией (или это?).

2.market.getItemsЦена - единственная функция, которую я вижу здесь, которая является асинхронной. Поэтому просто вызовите его после вызова метода Array.map, и все должно быть в порядке.

3.In market.getItemsPrice(730, w, function(data) .... Я вижу, что вы передаете «w» для «имен», но в вашем примере вы перебираете «имена» вместо этого.

for(var i in names) { 
    console.log(names[i] + ' median price: ' + data[names[i]]['median_price']); 
} 

Является ли это недосмотром?

Дайте мне знать, если я вас неправильно понял.

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