В NodeJS Я обертываю функцию обещания для возврата статической переменной. Я уверен, что есть лучший способ, но я не смог найти его на Q's docs. Это работает, однако Q.Promise кажется излишним:Возвращение статического значения в качестве обещания
function parseXML(filepath) {
return Q.Promise(function (resolve, reject, notify) {
readXML(filepath).then(function (xml) {
... (long synchronised code)...
//console.log('products -> ', products);
resolve(products);
}).catch(function (err) {
reject(err);
});
});
}
В Угловом я хотел бы использовать $ q.when, но в библиотеке Q «когда» кажется, есть другая роль, как я понимаю. Я, конечно, пропустил какой-то метод «когда». Это то, что я хотел бы быть в состоянии сделать:
function parseXML(filepath) {
readXML(filepath).then(function (xml) {
...
// some Q method to create a fulfilled promise
Q.???(products);
});
}
Вы должны 'вернуть ReadXml (Filepath)' из 'ParseXML '. Как только функция использует обещание, это становится обещанием (пока вы возвращаете обещание изнутри), и в вашем случае 'parseXML' тогда станет' thenable' – Wainage
Но мне нужно создать Q.Promise, как в первом примере или есть способ вернуть переменную «products» без упаковки метода с Q.Promise? – Guy
№ После того, как вы пообещаете/асинхронно, вы не можете синхронизировать. Попытка закончится слезами. Я могу изложить ваш пример в ответе, если это не ясно. – Wainage