我想知道如何在使用異步方法時正確處理流星錯誤。我已經嘗試了以下操作,但是錯誤是在客戶端回調的result參數中返回的,而不是error參數。使用未來的異步調用適當的流星錯誤處理使用未來
Server代碼:
Future = Npm.require('fibers/future');
Meteor.methods({
'myServerMethod': function(){
var future = new Future();
// URL to some remote API
var url = UrlOfTheApiIWantToCall;
HTTP.get(url, {//other params as a hash},
function (error, result) {
if (!error) {
future.return(result);
} else {
future.return(error);
}
}
);
return future.wait();
}
});
客戶端代碼:
Meteor.call('myServerMethod', function (error, result) {
if(error){
console.warn(error);
}
console.log('result', result);
});
正如我上面說, '錯誤' 總是未定義在客戶端事件時HTTP.get()上服務器端返回一個錯誤。我也嘗試在服務器端替換future.return(error);
和future.throw(error);
,但這確實在服務器端引發了錯誤。客戶端錯誤參數然後得到500服務器錯誤,雖然服務器上引發的錯誤是401未授權錯誤。
那麼,是否可以正確使用Fiber的Future,以便客戶端回調接收與服務器回調相同的錯誤參數?
不是解決辦法,但澄清,'HTTP'呼叫可以在服務器端'變種解析度=同步HTTP.get(url,{})',還有很多其他的用例,我們需要在服務器端使用回調函數,我也在尋找一個好的答案 – Sasikanth