Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize the library for webpack users #1517

Merged
merged 3 commits into from Mar 23, 2018
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions Makefile
Expand Up @@ -123,6 +123,10 @@ $(BUILD_ES)/package.json: package.json
mkdir -p "$(@D)"
support/sync-es-package.js > $@

$(BUILD_ES)/README.md: README.es.md
mkdir -p "$(@D)"
cp $< $@

$(BUILD_ES)/%: %
mkdir -p "$(@D)"
cp $< $@
Expand Down
59 changes: 59 additions & 0 deletions README.es.md
@@ -0,0 +1,59 @@
![Async Logo](https://raw.githubusercontent.com/caolan/async/master/logo/async-logo_readme.jpg)

[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async)
[![NPM version](https://img.shields.io/npm/v/async.svg)](https://www.npmjs.com/package/async)
[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master)
[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![libhive - Open source examples](https://www.libhive.com/providers/npm/packages/async/examples/badge.svg)](https://www.libhive.com/providers/npm/packages/async)
[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/async/badge?style=rounded)](https://www.jsdelivr.com/package/npm/async)


Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser.

This version of the package is optimized for building with webpack. If you use Async in Node.js, install [`async`](https://www.npmjs.com/package/async) instead.

For Documentation, visit <https://caolan.github.io/async/>

*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)*


```javascript
// for use with callbacks...
import { forEachFor } from "async-es";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this should be import { forEachOf } from "async-es";

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops, thanks! Fixed


const images = {cat: "/cat.png", dog: "/dog.png", duck: "/duck.png"};
const sizes = {};

forEachOf(images, (value, key, callback) => {
const imageElem = new Image();
imageElem.src = value;
imageElem.addEventListener("load", () => {
sizes[key] = {
width: imageElem.naturalWidth,
height: imageElem.naturalHeight,
};
callback();
});
imageElem.addEventListener("error", (e) => {
callback(e);
});
}, err => {
if (err) console.error(err.message);
// `sizes` is now a map of image sizes
doSomethingWith(sizes);
});
```

```javascript
import { mapLimit } from "async-es";

// ...or ES2017 async functions
mapLimit(urls, 5, async function(url) {
const response = await fetch(url)
return response.body
}, (err, results) => {
if (err) throw err
// results is now an array of the response bodies
console.log(results)
})
```
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -10,13 +10,17 @@

Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser.

This version of the package is optimized for the Node.js environment. If you use Async with webpack, install [`async-es`](https://www.npmjs.com/package/async-es) instead.

For Documentation, visit <https://caolan.github.io/async/>

*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)*


```javascript
// for use with Node-style callbacks...
var async = require("async");

var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
var configs = {};

Expand All @@ -38,6 +42,8 @@ async.forEachOf(obj, (value, key, callback) => {
```

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

// ...or ES2017 async functions
async.mapLimit(urls, 5, async function(url) {
const response = await fetch(url)
Expand Down
1 change: 1 addition & 0 deletions support/sync-es-package.js
Expand Up @@ -5,6 +5,7 @@ var json = JSON.parse(fs.readFileSync(__dirname + "/../package.json"), "utf8");

json.name = "async-es";
json.main = "index.js";
json.sideEffects = false;
delete json.dependencies["lodash"];

process.stdout.write(JSON.stringify(json, null, 2));
Expand Down