Другое решение состоит в том, чтобы выполнить код через последовательный исполнитель nsynjs .
nsynjs будет последовательно оценивать все обещания и ставить обещания результат в свойство data
:
function synchronousCode() {
var getURL = function(url) {
return window.fetch(url).data.text().data;
};
var url = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js';
console.log('received bytes:',getURL(url).length);
};
nsynjs.run(synchronousCode,{},function(){
console.log('synchronousCode done');
});
Шаг 1. Wrap с обратным вызовом в оболочку, совместимую с nsynjs (если у нее есть обещанная версия, вы можете пропустить этот тест):
var ajaxGet = function (ctx,url) {
var res = {};
var ex;
$.ajax(url)
.done(function (data) {
res.data = data;
})
.fail(function(e) {
ex = e;
})
.always(function() {
ctx.resume(ex);
});
return res;
};
ajaxGet.nsynjsHasCallback = true;
Шаг 2. Вставить синхронную логику в функцию:
function process() {
console.log('got data:', ajaxGet(nsynjsCtx, "data/file1.json").data);
}
Шаг 3. Выполнить функцию синхронно через nnsynjs:
nsynjs.run(process,this,function () {
console.log("synchronous function finished");
});
Nsynjs будет оценивать все операторы и выражения шаг за шагом, приостанавливая выполнение в случае, если результат некоторой медленной функции не готов.
Дополнительные примеры здесь: https://github.com/amaksr/nsynjs/tree/master/examples
Наиболее близким к стандарту было бы описание Jacyll Front Matter . Все остальное, похоже, следует этому. Если Jekyll не изобрел Yaml Front Matter, они были одним из первых замечательных проектов, которые могли бы его отличить.
YAML Lint linter смог проверить компоненты YAML каждого файл, который я выбрал. Согласно спецификации YAML , три-дефис ---
ограничивает документы; один файл YAML может содержать много документов YAML. Содержимое Markdown после дефиса просто отбрасывается linter.
YAML очень свободен и прощает (в основном). Цитирование всех ваших строк не повредит, но вам, вероятно, не нужно беспокоиться.
Желание какого-то базового стандарта Markdown - это то, что привело к проекту CommonMark .
Таким образом, несмотря на отсутствие формальной спецификации, появился образец лучших практик. Придерживаясь этого шаблона, вы получаете некоторые удивительно портативные и универсальные файлы данных.