2016-10-08 7 views
0

Может ли кто-нибудь сказать мне, что не так с кодом при вызове обещания с картой? Я получаю неопределенный вывод. P.S это для метеор.undefined с обещанием async/await

async function getResUrl(item, url){ 

    let res = await HTTP.call("GET", url, function(err, res){ 
    return res.statusCode; 
    }); 
    console.log(res); 
    return res; 
} 

function getUrlRes(_screenName) { 

    let getRes = Promise.all(_.map(Object.keys(social), function(item){ 
    let url = social[item]+"/"+_screenName; 

    getResUrl(item, url); 

    })).then(function(result){ 
    return result 
    }); 

return getRes; 
} 
+2

Зачем использовать '_.map()' вместо встроенного '.map()'? – jfriend00

+6

'getResUrl' ...' getUrlRes' Вам нравится мучительная дислексика, не так ли. –

+4

«HTTP.call» возвращает обещание, похоже, что у него есть обратный вызов, и вы просто возвращаетесь от него? – adeneo

ответ

2

Предполагая, что getResUrl() возвращается обещание, это изменить:

getResUrl(item, url); 

в

return getResUrl(item, url); 

Вы должны вернуть обещание так map() может аккумулировать обещания.

Похоже, вам также может потребоваться должным образом прояснить HTTP.call(), чтобы он дал обещание.