An open API service indexing awesome lists of open source software.

https://github.com/valqelyan/babel-plugin-promise

Promisify plugin for babel,turn any callback into promise
https://github.com/valqelyan/babel-plugin-promise

api async async-await async-await-features asynchronous babel babel-plugin callback callback-functions promise promise-library

Last synced: about 1 month ago
JSON representation

Promisify plugin for babel,turn any callback into promise

Awesome Lists containing this project

README

          

# babel-plugin-promise

[![Travis](https://img.shields.io/travis/rust-lang/rust.svg?style=flat-square)](https://travis-ci.org/vaheqelyan/babel-plugin-promise)

Turn any callback into promise

[Basic promisify using leading comments](#basic)

[Without error handling.](#without-error-handling)

[Using your own arguments](#using-your-own-arguments)

[ES7 Async/Await](#es7-asyncawait)

[ES7 Async/Await + Arrow functions](#es7-async-and-await-arrow-functions)

via NPM
```code
npm install babel-plugin-promise --save-dev
```

via YARN
```code
yarn add babel-plugin-promise --dev
```

## Basic

**before**

```javascript
var fs = require("fs");
//@promisify promiseName
__ = fs.readFile("../package.json", "utf8");

```

**after**

```javascript
var fs = require("fs");
//@promisify promiseName

function promiseName() {
return new Promise((resolve, reject) => {
fs.readFile("../package.json", "utf8", (err, data) => {
if (err) reject(err);
resolve(data);
});
});
}

promiseName().then(res => {
console.log(res);
});

```

## Without error handling.

If the callback does not return us the error message, insert ```null``` instead of ```error```

**before**

```javascript
var fs = require("fs");
//@promisify promiseName
__ = fs.readFile("../package.json", "utf8");
```

**after**

```javascript
var fs = require("fs");
//@promisify promiseName

function promiseName() {
return new Promise(resolve => {
fs.readFile("../package.json", "utf8", data => {
resolve(data);
});
});
}
```

You can see that it does not handle reject

## Using your own arguments

For custom arguments

**before**

```javascript
//@promisify findUser
__ = User.findOne(arg1);
```

**after**
```javascript
//@promisify findUser
function findUser(arg1) {
return new Promise((resolve, reject) => {
User.findOne(arg1, (err, data) => {
if (err) reject(err);
resolve(data);
});
});
}
```

## ES7 Async/Await

This time you should use trailing comments

**before**

```javascript
var fs = require("fs");

async function someFunction(){
await fs.readFile('./package.json','utf8') //@promisify
}
```

**after**

```javascript
var fs = require("fs");

async function someFunction() {
await new Promise((resolve, reject) => {
fs.readFile('./package.json', 'utf8', (err, data) => {
if (err) reject(err);
resolve(data);
});
}); //@promisify
}
```

### ES7 Async/Await + Arrow functions

Also, you can make promises with an arrow function expression

**before**

```javascript
var fs = require("fs");

const some = async () => await fs.readFile("./package.json", "uft8"); //@promisify

```

**after**

```javascript
var fs = require("fs");

const some = async () => await new Promise((resolve, reject) => {
fs.readFile("./package.json", "uft8", (err, data) => {
if (err) reject(err);
resolve(data);
});
}); //@promisify
```