Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
move-on
is a module that:
.all
and .race
methodsthis
reference inner context for all functions in the chain to transmit data between functions Any bugs found? Give me to know on GitHub.
npm install move-on
npm test
const moveOn = require('move-on');
/* [Function] moveOn(list, config, onDone, onCatch)
[Function] moveOn.all(list, config, onDone, onCatch)
[Function] moveOn.each(list, config, onDone, onCatch)
[Function] moveOn.first(list, config, onDone, onCatch) */
const list = [retrieveData, computeData, displayData];
const config = { timeout: 5000 };
moveOn(list, config, onDone, onCatch);
function retrieveData(resolve, reject, context){
setTimeout(resolve, 1000); //asynchronous resolve
}
function computeData(resolve, reject, context){
resolve(); //synchronous resolve
}
function displayData(resolve, reject, context){
resolve();
}
function onDone(reject, context){ }
function onCatch(context){ }
The module's methods expect the [Array] list
of functions to be passed as the first argument. Each function in the chain has the resolve
and reject
parameter, that should be called when ready (or failed) in order to move the functions execution forward. When the functions chain is successfully executed, the done
callback function is called finally, otherwise the catch
callback function is called.
moveOn
The chained functions are executed sequentially (one after another). Each function is expected to be resolved
, so that the next chained function was executed. The done
function is called as the last one, when all previous chained functions resolved. The catch
function is called instead of done
function, when at least one chained function failed (rejected). See the full description below.
moveOn.all
The all
static method of move-on
module executes all chosen functions at the same time (similarly to Promises' .all
method). All chained functions are expected to be resolved
so that the final done
function was called. The catch
function is called instead of done
function, when at least one chained function failed (rejected). See the full description below.
moveOn.each
The each
static method of move-on
module executes all chosen functions at the same time. Each chained function is expected to be either resolved
or rejected
, so that the final done
function was called. The failed (rejected) function does not stop the further functions execution. It can be used eg. to log the warnings in the catch
callback function. See the full description below.
moveOn.first
The first
static method of move-on
module executes all chained functions at the same time. It expects the first (fastest) function to be resolved
, so that the done
function was called (similarly to Promises' .race
method). When all functions failed (rejected), the catch
function is called instead. See the full description below.
list
, config
, done
, catch
)move-on
module function executes the list
functions sequentially (one after another) in the chainlist
function resolves, the next list
function is called, and so on...list
function resolves, the done
function is called once (it ends up the module execution)list
function rejects, the farther list
functions and the done
function are not called in the endlist
function rejects, the catch
function is called instead once (it ends up the module execution)list
function can be resolved and | or rejected multiple times. The forks of chain are created and executed then [read more]list
function can execute the inner move-on
module [read more]list
, config
, done
, catch
)move-on
.all
static method executes all the list
functions simultaneously (at the same time)list
function resolves, the done
is not called immediatelydone
waits, till all list
functions are resolved, to be called (it ends up the module execution - after that, all resolve and reject calls are ignored)list
function rejects, the done
function is not called in the endlist
function rejects, the catch
function is called instead once (it ends up the module execution - after that, all resolve and reject calls are ignored)list
function resolves and | or rejects multiple times, only the first call is respected [read more]list
function can execute the inner move-on
module [read more]list
, config
, done
, catch
)move-on
.each
static method executes all the list
functions simultaneously (at the same time)list
function resolves, the done
is not called immediatelydone
waits, till each list
function is either resolved or rejected, to be called (it ends up the module execution - after that, all resolve and reject calls are ignored)list
function rejects, the catch
function is called for each function individuallylist
function rejects and the catch
is called, it does not end up the module executionlist
function resolves and | or rejects multiple times, only the first call is respected [read more]list
function can execute the inner move-on
module [read more]list
, config
, done
, catch
)move-on
.first
static method executes all the list
functions simultaneously (at the same time)done
waits, till the first (fastest) list
function is resolved, to be called (it ends up the module execution - after that, all resolve and reject calls are ignored)list
functions reject, the done
function is not called in the endlist
functions reject, the catch
function is called instead once (it ends up the module execution - after that, all resolve and reject calls are ignored)list
function resolves and | or rejects multiple times, only the first call is respected [read more]list
function can execute the inner move-on
module [read more]list
[Array: function | array]The [Array] list
stores the list of functions, that should be called. It can contain:
const list = [fnA, fnB, fnC];
const list = [fnA, [obj, fnB, fnC], fnD]
const list = [fnA, [obj, 'fnB', 'fnC'], fnD]
list
can contain [Function] items. It may be function, arrow function or object's methodconfig.context
reference (except arrow functions and already bound functions [read more])const retrieveData = function(){};
const computeData = ()=>{};
const displayData = { display:()=>{} };
const list = [retrieveData, computeData, displayData.display];
config.context
referencethis
reference for the chosen functions (except arrow functions and already bound functions [read more])list
:
[0]
item should indicate the object or value to be the this
reference for the functions[1]
, [2]
, etc... item(s) should indicate the function(s), that will be bound to the [0]
object or value[0]
object or value instead of the config.context
config.bind
setting does not affect the individual this
reference settingconfig.context
parameterlist
can still contain the [Function] items next to this [Array] itemconst workers = {}, earnings = {}, tasks = {};
const config = {context: tasks}; //the default this reference
const list = [
functionA, //this === tasks
[workers, functionB], //this === workers
[earnings, functionC] //this === earnings
];
moveOn(list, config, onDone, onCatch));
The methods passed to the list
loses their this
reference to the object, they were declared in, what may be undesirable.
const workers = {
addWorker: function(){},
listEarnings: function(){}
;
const list = [
workers.addWorker, //this !== workers
workers.listEarnings //this !== workers
];
this
reference to the object, that the methods are declared in, push [Array] item with methods' [String] names into the list
:
[0]
item should indicate the object, that the methods are declared in[1]
, [2]
, etc... item(s) should indicate the [String] name(s) of the method(s) declared in the [0]
objectthis
reference to the [0]
object and are not bound to the config.context
config.bind
setting does not affect the this
referenceconfig.context
parameterlist
can still contain the [Function] items or [Array] items with functions next to this [Array] item with [String] method's namesconst displayData = function(){};
const workers = {
addWorker: function(){},
listEarnings: function(){}
};
const list = [ [workers, 'addWorker', 'listEarnings'], displayData ];
moveOn(list, config, onDone, onCatch));
config
[Object | null]config
argument allows to set the following config properties: timeout, bind
, context
, passContext
config
is set to null
or when it does not define the particular config property or when it defines the config property incorrectly, the default value is used for this config property insteadconfig.timeout
Type: [Number | null | Infinity]
Default: 10000
Description:
0
, that indicates the millisecondsmoveOn
: The config.timeout
starts out counting down individually for each chained function immediately after it is called. It expects each function to be resolved or rejected before timeout pass, otherwise it calls the catch
function with the timeout error argument passedmoveOn.all
: The config.timeout
starts out counting down once for all chained functions when the module is fired. It expects all functions to be resolved or any function to be rejected before timeout pass, otherwise it calls the catch
function with the timeout error argument passedmoveOn.each
: The config.timeout
starts out counting down once for all chained functions when the module is fired. It expects all functions to be either resolved or rejected before timeout pass, otherwise it calls the catch
function with the timeout error argument passedmoveOn.first
: The config.timeout
starts out counting down once for all chained functions when the module is fired. It expects at least one function to be resolved or all functions to be rejected before timeout pass, otherwise it calls the catch
function with the timeout error argument passedresolves
s and reject
s that are called after the config.timeout
pass are ignoredconfig.timeout
is set to null
or Infinity
, the timeout is not set at all. If any of the chained function does not resolve (or reject), anything happen then and the done
or catch
function is never called in the endconfig.timeout
is not defined, or if it is defined with incorrect value, the default value is set insteadIt is an [Error] object with the following properties, that allow to distinguish, that the timeout error has been passed:
message
: eg. "Timeout. The chained function did not respond in the expected time of 10000 ms."
info
: "timeout"
code
: "ETIMEDOUT"
config.context
Type: [any]
Default: {}
Description:
config.context
refers to the object (or value), that will be used as the this
reference in all list
functions, done
and catch
config.context
's properties can be defined and got in any functionconfig.context
can be any value, as any value can be used as the this
reference in Function.prototype.bind
[read more]config.context
is used as the this
reference by default, unless you set config.bind
to falseconfig.context
is also accessible as the parameter, unless you set config.passContext
to falseconfig.passContext
Type: [Boolean]
Default: true
Description:
config.context
object (or value) is passed through each list
function, the done
and catch
as the argument:
config.context
as the argument, set config.passContext
to false
config.context
accessible as the parameter is usefull:
list
functions, done
or catch
are arrow functions, that are non-binding and cannot refer to the config.context
via this
keywordlist
with individually bound functions or methods names, that do not refer to the config.context
via this
keywordlist
functions, done
or catch
are already boundconfig.bind
Type: [Boolean]
Default: true
Description:
list
function, done
and catch
are bound to the config.context
object (or value), thus the this
keyword refers to the config.context
this
reference of all functions, set the config.bind
to false
this
reference for chosen functions, see the list
constructing optionsthis
reference changed anymorereject
, context
) [Function]The done
is a callback function, that (in general) is called as the last one, when the list
functions have been successfully executed. The done
is called in a different way and time, depending on which method is called:
moveOn
The done
is called, when the last function from the list
collection is resolved.done
:[0]
reject
[1]
config.context
[2]
, [3]
, etc... The arguments passed by the last resolved list
functionmoveOn.all
The done
is called, when all list
functions are resolved.done
:[0]
reject
[1]
config.context
[2]
resolveMap
moveOn.each
The done
is called, when all list
functions are either resolved or rejected.done
:[0]
reject
[1]
config.context
[2]
resolveMap
moveOn.first
The done
is called, when the first (fastest) list
function is resolved.done
:[0]
reject
[1]
config.context
[2]
, [3]
, etc... The arguments passed by the first (fastest) resolved list
functionresolveMap
objectresolveMap
object is passed through done
callback when the moveOn.all
and moveOn.each
method is executed. It stores all arguments that have been passed by each list
function's resolve
call.resolveMap
contains all arguments
objects at the indeces that correspond to the order of list
functions calling; the third list
function's arguments are accessible via resolveMap[2]
, and so on...resolveMap
properties:
missing
It returns the [Array] list of those list
functions' indeces (due to the order of calling) that have not been resolvedresolveMap
methods:
forEach
arguments
object.[0]
parameter to be the [Function] callback.arguments
object.{0: arguments, 1: argumentsIndex, 2: resolveMap}
resolveMap.forEach((arguments, argumentsIndex, resolveMap) => { } );
forAll
arguments
object.[0]
parameter to be the [Function] callback.{0: argument, 1: argumentsIndex, 2: itemIndex, 3: resolveMap}
resolveMap.forAll((argument, argumentsIndex, itemIndex, resolveMap) => { } );
context
) [Function]The catch
is a callback function, that (in general) is called as the last one, when the list
function(s) have failed. The catch
is called in a different way and time, depending on which method is called:
moveOn
The catch
is called, when any list
function rejects.catch
:[0]
config.context
[1]
, [2]
, etc... The arguments passed by the rejected list
functionmoveOn.all
The catch
is called, when any list
function rejects.catch
:[0]
config.context
[1]
, [2]
, etc... The arguments passed by the rejected list
functionmoveOn.each
The catch
is called for each list
function rejection.catch
:[0]
config.context
[1]
, [2]
, etc... The arguments passed by the rejected list
functionmoveOn.first
The catch
is called, when all list
function rejected.catch
:[0]
config.context
[1]
rejectMap
rejectMap
objectrejectMap
object is passed through catch
callback when the moveOn.first
method is executed. It stores all arguments that have been passed by all list
functions' reject
callsrejectMap
contains all arguments
objects at the indeces that correspond to the order of list
functions calling; the third list
function's arguments are accessible via rejectMap[2]
, and so on...rejectMap
methods:
forEach
arguments
object.[0]
parameter to be the [Function] callback.arguments
object.{0: arguments, 1: argumentsIndex, 2: rejectMap}
rejectMap.forEach((arguments, argumentsIndex, rejectMap) => { } );
forAll
arguments
object.[0]
parameter to be the [Function] callback.{0: argument, 1: argumentsIndex, 2: itemIndex, 3: rejectMap}
rejectMap.forAll((argument, argumentsIndex, itemIndex, rejectMap) => { } );
list
function is called with the following arguments passed:
[0]
resolve
callback function[1]
reject
callback function[2]
config.context
object (or value)[3]
, [4]
, etc... (for moveOn
method only) The arguments passed by the previous list
functionresolve
and reject
can be called with any number of argumentsresolve
is called with arguments, these arguments will be passed:
moveOn
: for the further list
function (or for the done
function, when the last list
function resolves)moveOn.first
: for the done
functionmoveOn.all
, moveOn.each
: for the done
function in the resolveMap
objectreject
is called with arguments, these arguments will be passed:
moveOn
, moveOn.all
, moveOn.each
: for the catch
functionmoveOn.first
: for the catch
function in the rejectMap
objectfunction fetchData(resolve, reject, context){
this.someAsyncAjaxHere((err, data) => {
if(err) return reject(new Error('Could not read the data.'));
this.data = data;
return resolve();
});
}
resolve
| reject
callsresolve
and reject
do not end function execution. In order to end function execution, use return resolve();
or return reject();
moveOn.all
, moveOn.each
and moveOn.first
methods expect the list
functions to call resolve
or reject
oncemoveOn
method, as it calls the list
functions sequentially, accepts the multiple resolve
and reject
calls:
list
function calls the resolve
twice, it runs the further list
functions twice (the forks are created); the resolve
can be called eg. with different argumentslist
function calls the reject
twice, it calls the catch
twice; the reject
can be called eg. with different [Error] objectslist
function calls both resolve
and reject
, it both runs the further list
functions and calls the catch
move-on
moduleFAQs
Creates a queue of sync or async functions with resolve and reject callback.
The npm package move-on receives a total of 3,954 weekly downloads. As such, move-on popularity was classified as popular.
We found that move-on demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.