babel-plugin-transform-async-to-bluebird's Introduction
babel-plugin-transform-async-to-bluebird's People
babel-plugin-transform-async-to-bluebird's Issues
awaiting non promise issue
Since async/await is transformed in to coroutine
, you get an error when you await
something that is not a promise, see: http://bluebirdjs.com/docs/error-explanations.html#error-a-value-was-yielded-that-could-not-be-treated-as-a-promise
For example
(async () => {
await 1;
})();
should work without problems, as it does with the standard babel async-to-generator transform
Maybe it needs to transform await x
to yield Promise.resolve(x)
Class methods get wrapped twice
I've experienced a strange bug while trying to use this plugin. I believe it is caused by the wrapping of async class methods twice (seems to stop the coroutine from running).
Here is a sample code snippet that reproduces the bug:
class Test {
async go () {
console.log('start:go')
await Promise.resolve('test')
console.log('end:go')
}
}
const runGo = () => {
return (new Test()).go()
}
;(async () => {
console.log('start:all')
await runGo()
console.log('end:all')
})()
If you transpile this using the bluebird
preset (which relies on this plugin) and the transform-es2015-modules-commonjs
plugin, the resultant code is this:
'use strict';
var _bluebird = require('bluebird');
class Test {
*go() {
return (0, _bluebird.coroutine)(function* () {
console.log('start:go');
yield (0, _bluebird.resolve)((0, _bluebird.resolve)('test'));
console.log('end:go');
})();
}
}
const runGo = () => {
return new Test().go();
};
(0, _bluebird.coroutine)(function* () {
console.log('start:all');
yield (0, _bluebird.resolve)(runGo());
console.log('end:all');
})();
Running this showing the promise never running:
start:all
end:all
If I simply remove the *
from the go class method in the transpiled output (and therefore just undo its generatorness - and let it return the coroutine generator instead), this issue goes away and the result is:
start:all
start:go
end:go
end:all
babel 7 support
Are there any plans to release a beta version of this plugin that works with babel 7?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.