handle-arguments
v3.1.0
Published
Get separately non-callback arguments in `.arguments` and the last argument if it [is-callback-function][] in `.callback`. It also works like [sliced][], but returns object with `.arguments` and `.callback` properties.
Downloads
419
Readme
handle-arguments
Get separately non-callback arguments in
.arguments
and the last argument if it is-callback-function in.callback
. It also works like sliced, but returns object with.arguments
and.callback
properties.
Install
npm i handle-arguments --save
Usage
For more use-cases see the tests
const handleArguments = require('handle-arguments')
handleArguments
Get separately non-callback arguments in
.arguments
, and the last function if it is-callback-function in.callback
. Signature is like sliced, it works almost the same way, but returns object with.arguments
and.callback
properties.
Params
argz
{Array|Arguments}: Arguments object or array to eat.names
{Array|Number}: If array directly passed to is-callback-function, otherwise to sliced.index
{Number}: Passed directly to sliced ifnumber
.returns
{Object}
Example
var handle = require('handle-arguments')
function fixture () {
return handle(arguments)
}
function cb () {}
function noop () {}
console.log(fixture(1, 2, 3, 4).arguments) // => [1, 2, 3, 4]
console.log(fixture(1, 2, 3, 4).callback) // => false
console.log(fixture(1, 2, cb).arguments) // => [1, 2]
console.log(fixture(1, 2, cb).callback) // => [Function: cb]
console.log(fixture(1, 2, noop).arguments) // => [1, 2, noop]
console.log(fixture(1, 2, noop).callback) // => false
// treat functions named `noop` or `foo` as callback
function fn () {
return handle(arguments, ['foo', 'noop'])
}
console.log(fn(1, 2, 3, noop).arguments) // => [1, 2, 3]
console.log(fn(1, 2, 3, noop).callback) // => [Function: noop]
Instead of commonly used and wrong pattern
It is part of "Optiomization Killers" and needed very much, so we need correct pattern to reuse.
function fixture () {
var args = [].slice.call(arguments)
var len = args.length
var callback = args[len - 1]
if (typeof callback === 'function') {
args = args.slice(0, -1)
callback.apply(null, [null].concat(args))
}
return args
}
Related
- arr-includes: Return true if any of passed values exists in array. Using in-array. | homepage
- common-callback-names: List of common callback names - callback, cb, callback_, next, done. | homepage
- function-arguments: Get arguments of a function, useful for and used in dependency injectors.… more | homepage
- get-fn-name: Get function name with strictness and correctness in mind. Also works for… more | homepage
- is-async-function: Is function really asynchronous function? Trying to guess that based on check… more | homepage
- is-callback-function: Returns true if function is a callback. Checks its name is one… more | homepage
- parse-function: Parse a function, arrow function or string to object with name, args,… more | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.