Skip to content

Instantly share code, notes, and snippets.

@artalar
Last active August 8, 2018 17:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save artalar/10bbdd64422b2b3b022f9fdc2d00f230 to your computer and use it in GitHub Desktop.
Save artalar/10bbdd64422b2b3b022f9fdc2d00f230 to your computer and use it in GitHub Desktop.
import * as t from "jsdoc-runtime";
const tSqrt = t.declare.number
// if input will not valid
// return to last (this) workflow node
.default(t.context.fallback(() => 0))
// used in autotests
.from(0)
.to(t.int)
const sqrt = t`
The function returns the square root of a number
@param ${tSqrt} number
@return ${t.context.add({ result: tSqrt.or(t.long) })}
`(number => {
const result = t`${t.context.result}`(Math.sqrt(number));
return result;
});
@artalar
Copy link
Author

artalar commented May 4, 2018

Предположим у нас есть какой-то стек вызова, который который выполняет какую-то юзерстори. Например выполнение этой логики запускается функцией startCalculateLogic. Эта функция объявляет в описании своих типов в контексте фолбек. Контекст в описании типов доступен всем нижележащим по стеку типам (сделать такое не сложно). Если какая-то ф-я внутри упадет или сама запросит фолбек (на этапе валидации входных параметров) - то выполнение переходит к колбеку фолбека и дальше (стек при этом теряется). Соответственно фолбек у startCalculateLogic может отображать уведомление пользователю "что-то пошло не так" и т.п.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment