Я делаю вызов Async на стороне сервера, через Meteor.methods
.Посылы в MeteorJS
Я хочу, чтобы мой клиент ожидал ответа асинхронизации, прежде чем пытаться выполнить любую дальнейшую логику.
Мне нужна помощь, чтобы понять, как использовать Async/Promises с удаленными HTTP-запросами.
В настоящее время, у меня есть очень простая настройка событий:
'click #getOrders': function() {
Meteor.call('getOrders', function(err, data) {
if (!err) {
console.log(data);
}
})
}
который затем вызывает:
var shopifyAPI = Meteor.npmRequire('shopify-node-api');
var Shopify = new shopifyAPI({
shop: 'xxxxx.myshopify.com',
shopify_api_key: 'xxxxxx',
access_token: 'xxxxx'
});
Meteor.methods({
'getOrders': function() {
var promise = new Promise(function(resolve, reject) {
Shopify.get('/admin/orders/count.json', function(err, res) {
if (err) reject(err);
else resolve(res);
});
});
promise.then(function(data) {
return data;
})
}
})
Когда я нажимаю мой обработчик событий, я могу видеть мои журналы сервер правильно прием данных. Добавление console.log
под номером promise.then
подтверждает, что код обещания работает.
Однако моя клиентская сторона console.log
всегда не определена, поскольку она возвращает результат до того, как мой асинхронный ответ вернется. Как я могу справиться с этим правильно?
Возвращение обещание это все, что я пропал без вести. – ilrein