UNPKG

nisp

Version:

A language that for easily build cross-language language

28 lines (27 loc) 881 B
"use strict"; exports.__esModule = true; var core_1 = require("../core"); var root = typeof window === 'object' ? window : global; // ["fn", <arg1>, <arg2>, ...] exports["default"] = function (fn, customPromise) { var P = customPromise || root['Promise']; // eslint-disable-line return core_1.macro(function (ctx) { var ast = ctx.ast; var syncedArgs = []; var p = ast.length > 1 ? P.resolve(core_1.arg(ctx, 1)) : P.resolve(); var f = function (i) { return function (v) { syncedArgs.push(v); return core_1.arg(ctx, i); }; }; for (var i = 2; i < ast.length; i++) { p = p.then(f(i)); } return p.then(function (v) { if (ast.length > 1) syncedArgs.push(v); return fn.apply(ctx, syncedArgs); }); }); };