2015-06-18 2 views
0

Я получил следующий код:получить значение от внешнего обещанию angularjs

generateFromID: function (icon, width, height, color) { 

     path = []; 

     iconData.get(icon).then(function (iconP) { 

     var path = iconPathCache.generate(iconP); 

     }); 

     console.log(path); 

     return this.generate(path, width, height, color); 


    }, 

Как я могу получить путь за пределами .then?

console.log(iconData.get(icon)); 

приведет:

Promise {$$state: Object}$$state: Object__proto__: Object 

ниже код также не работает:

return iconData.get(icon).then(function (iconP) { 

     return path = iconPathCache.generate(iconP); 

     }); 

     return this.generate(path, width, height, color); 

Может кто-нибудь сказать мне, что я делаю неправильно?

+0

Что вы имеете в виду под «внешним. Then»? Я думаю, вы пропустили концепцию асинхронного исполнения и обещание $ q – fantarama

ответ

0

Извините, но я думаю, вы смущены обещаниями и асинхронными сообщениями в целом.

Я предполагаю, что значение path получил от iconData.get(icon) должно быть передано в this.generate, это может быть сделано:

generateFromID: function (icon, width, height, color) { 
    return iconData.get(icon).then(function (iconP) { 
    var path = iconPathCache.generate(iconP); 
    console.log(path); 
    return this.generate(path, width, height, color); 
    }); 
}, 

Теперь generateFromID вернется обещание.

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