catch()
и then()
ожидают получить функцию в качестве аргумента. В вашем примере OnRejected
- это функция, а console.log("This is an error")
- нет.
Чтобы объяснить немного больше: console.log
является функцией, но console.log('something')
является результатом выполнения функции console.log
с аргументом 'something'
.
Чтобы вернуться к catch()
и then()
, они вызовут метод, который вы ему дадите (в вашем примере: OnRejected
), и вызовете его с аргументом, каким бы он ни был возвращен ранее разрешенным обещанием.
Пример:
getDataFromDistantServer().then(function (data) => {
console.log(data)
return otherCallToOtherServer()
}).then( function (dataFromOtherServer) => {
console.log(dataFromOtherServer)
})
Это также будет работать, потому что doSomething
является функцией:
var doSomething = function(data) {
console.log(data)
return otherCallToOtherServer()
}
getDataFromDistantServer()
.then(doSomething)
.then( function (dataFromOtherServer) => {
console.log(dataFromOtherServer)
})
Примечание : соглашение об именах для вашей функции [ 1114] будет предписывать не начинать имя с заглавной буквы и называть его onRejected
При выполнении коммуникации от Java к Java RMI был бы более простым и более целесообразным. Сериализация данных к/от некоторому XML или ОСНОВАННОМУ НА URL формату не добавляет много значения.
С EJB3 это очень просто, чтобы развернуть удаленные объекты и назвать их. Можно затем превратить те EJBs в веб-сервисы, если Вы должны позже, но для от Java к Java, я не могу думать о серьезном основании не использовать своего рода основанную на RMI коммуникацию.