1
我在服務器端通過Meteor.methods
進行異步調用。MeteorJS的承諾
我希望我的客戶端在嘗試運行任何進一步的邏輯之前等待異步響應。
我需要幫助瞭解如何利用異步/承諾與遠程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;
})
}
})
當我點擊我的事件處理程序,我可以看到我的服務器日誌被正確地接收數據。在promise.then
下添加console.log
確認承諾代碼正在工作。
但是,我的客戶端console.log
始終未定義,因爲它在我的異步響應回來之前返回結果。我如何正確處理這個問題?
返回的承諾是我失蹤了。 – ilrein