Я хочу избежать Адвокатов Обратного вызова, поэтому я основал обещание, но я немного застрял.Как сделать 3 звонка, используя обещание Метеор
мне нужно сделать getAllDataSource
->createDashboard
-> `sendDashboard``
Так код:
var call = Promise.promisify(Meteor.call, Meteor);
var calls = call(getAllDataSource()).
then(call.bind(Meteor, createDashboard())).
then(call.bind(Meteor, sendDashboard()));
calls.then(function(resThree){
console.log("Got Response!", resThree);
}).catch(function(err){
console.log("Got Error", err);
});
Но я немного потерял с первым вар call
я думаю, что нужно изменить его, но с чем? И тогда, как это будет известно, когда будет сделано getAllDataSource
?
var allDataSources;
getAllDataSources = Meteor.bindEnvironment(function(){
HTTP.call("GET", 'http://localhost:3000/api/datasources', {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer eyJrIjoic2RRbU9oM2Rkbmc0bHZUSjVlTjBPckRVNlplSW1DYzEiLCJuIjoibG9jYWxob3N0X2FkbWluX2tleSIsImlkIjoxfQ==',
},
},
function(error, result) {
if (!error) {
allDataSources = result.data;
} else {
console.error(error);
}
});
});
var sendme;
createDashboard = Meteor.bindEnvironment(function(){
for (var i = 0; i < 5; i++) {
console.log("I have " + i + " apples in " + allDataSources);
sendme = "hihihih";
}
});
sendDashboard = Meteor.bindEnvironment(function(){
for (var i = 0; i < 7; i++) {
console.log("I have " + i + " cats with " + sendme);
}
});
Он автоматически переходит к методу 2 при создании результата?
Спасибо за помощь
[EDIT] На самом деле это дает мне, что на консоли:
Got Error { [Error: Method 'undefined' not found [404]]
I20170209-10:39:30.990(1)? error: 404,
I20170209-10:39:30.991(1)? reason: 'Method \'undefined\' not found',
I20170209-10:39:30.991(1)? details: undefined,
I20170209-10:39:30.991(1)? message: 'Method \'undefined\' not found [404]',
I20170209-10:39:30.991(1)? errorType: 'Meteor.Error' }
[EDIT2] После последовавшей за ответ @ymz я получил эту ошибку:
Got Error { [Error: Method '[object Object],[object Object],[object Object],[object Object]' not found [404]]
I20170209-11:23:48.154(1)? error: 404,
I20170209-11:23:48.154(1)? reason: 'Method \'[object Object],[object Object],[object Object],[object Object]\' not found',
I20170209-11:23:48.154(1)? details: undefined,
I20170209-11:23:48.154(1)? message: 'Method \'[object Object],[object Object],[object Object],[object Object]\' not found [404]',
I20170209-11:23:48.154(1)? errorType: 'Meteor.Error' }
И я думаю, что это происходит из var calls = call(data).then .... // proceed from here
, потому что getAllDataSource()
помещает массив внутри data
здесь. Мне нужно немного больше помощи, пожалуйста,
вы уверены, что вы используете ** уаг Promise = требовать ('Блюберд'); **? – ymz
@ymz ОК, это фактически решило ошибку! Но правильно ли код? Я имею в виду, что такое «Метеор» в каждом звонке? – Jerome