Package Exports
- is-async-function
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (is-async-function) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
is-async-function

Is function really asynchronous function? Trying to guess that based on check if common-callback-names exists as function arguments names or you can pass your custom.
Install
Install with npm
$ npm i is-async-function --save
Usage
For more use-cases see the tests
const isAsyncFunction = require('is-async-function')
API
isAsyncFunction
Trying to guess is
fn
asynchronous function or not. But not is-callback-function be aware of that diff.
Params
fn
{Function}: is thisfn
a callback functionnames
{Array}: arguments names, default are common-callback-namesstrict
{Boolean}: defaults totrue
to always return a boolean, passfalse
to get index (position) - this is useful when you wanna understand which "callback name" exists as argument in thatfn
returns
{Boolean|Number}: always booleantrue
orfalse
when on strict mode, othewise it can be Number index representing the position and if index is 0 it is transformed to booleantrue
- so always positive value if function is async.
Example
var fs = require('fs')
var isAsyncFn = require('is-async-function')
console.log(isAsyncFunction(fs.readFile)) // => true
console.log(isAsyncFunction(fs.stat)) // => true
console.log(isAsyncFunction(fs.readFileSync)) // => false
console.log(isAsyncFunction(fs.statSync)) // => false
// or pass custom names to recognize as `async`
console.log(isAsyncFunction(fs.stat, ['cb'])) // => false
console.log(isAsyncFunction(fs.readFile, ['foo', 'bar']))
// => false, because fs.readFile uses `cb`
non-strict mode
passing
false
as second or third argument
var isAsyncFunction = require('is-async-function')
console.log(isAsyncFunction(fs.readFile, false)) // => 2
// => 2, because it callback argument is called `cb`
// and that's the third element in `common-callback-names` array
console.log(isAsyncFunction(fs.stat, false)) // => 1
// => 1, because it callback argument is called `callback_`
// and that's the second element in `common-callback-names` array
Side note: In previous nodejs versions it was called in a few different ways - cb_
, callback_
and etc. That's why common-callback-names exists. As in v7 it seems everything now is called callback
. So in most of the cases you will get boolean true
always - both in strict and non-strict mode. In non-strict mode that will mean your function has argument called callback
.
If you pass array of names as second argument, in non-strict mode you will get index of that array.
Example
var isAsyncFn = require('is-async-function')
// you considered you callback fucntion
// to be called `qux` for some reason
function myAsyncFn (foo, bar, qux) {
qux(null, 123)
}
console.log(isAsyncFn(myAsyncFn)) // => false
console.log(isAsyncFn(myAsyncFn, false)) // => false
console.log(isAsyncFn(myAsyncFn, ['callback', 'qux'], false)) // => 1
// you are getting "1", because `qux` is second item
// in provided `names` array.
Related
- common-callback-names: List of common callback names - callback, cb, callback_, next, done. | homepage
- fn-args: Get the arguments of a function | homepage
- fn-name: Get the name of a named function | 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-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.