JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 27955940
  • Score
    100M100P100Q223759F
  • License MIT

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.

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 npmjs.com The MIT License npm downloads

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.

code climate standard code style travis build status coverage status dependency status

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 this fn a callback function
  • names {Array}: arguments names, default are common-callback-names
  • strict {Boolean}: defaults to true to always return a boolean, pass false to get index (position) - this is useful when you wanna understand which "callback name" exists as argument in that fn
  • returns {Boolean|Number}: always boolean true or false when on strict mode, othewise it can be Number index representing the position and if index is 0 it is transformed to boolean true - 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.

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.

Charlike Make Reagent new message to charlike freenode #charlike

tunnckoCore.tk keybase tunnckoCore tunnckoCore npm tunnckoCore twitter tunnckoCore github