Comments (5)
Hi @lucaswxp,
Is the getResults()
function in your own API? or are you consuming it from some other API? Depending on which case, you can use it with asyncawait
as follows:
Creating getResults()
to work like a node-style asynchronous function:
// Define the function
var getResults = async.cps (function (param) {
// use throw and return stmts in here to pass err/result back to the caller's callback
if (param !== 'foo') throw new Error('param must equal "foo"');
var result = await (someAsyncComputation(param));
return result;
});
// Use the function - its just a normal node-style call
getResults('foo', function (err, result) {
if (err) /* handle error */
doSomethingWith(result);
});
Consuming a node-style getResults()
asynchronous function:
var Promise = require('bluebird');
var getResultsAsync = Promise.promisify(require('the api containing getResults').getResults);
// Use the function
var myFunction = async (function () {
var result = await (getResultsAsync());
...
});
Note that the next release of asyncawait
will be able to await node-style functions directly without the need to promisify
them first. But for now, that's how to do it. Has this answered your question?
from asyncawait.
Thanks @yortus! But would it also work if my callback only takes one parameter? Like function(result)
instead of function(err, result)
?
Good to know that feature will be coming in next release!
Btw, getResults()
is from my own API.
from asyncawait.
@lucaswxp async.cps(...)
always creates node-style callbacks, so the callback will always be called with the (err, result)
convention, even if an error never occurs. If you want your code to be interoperable in node-land, I think it's best to stick to this convention, as almost everything expects this.
from asyncawait.
Yes, of course! I was new to node when designed the API, so didn't know the convention at the time. Thanks for the feedback @yortus.
from asyncawait.
What if callback expects (err, arg1, arg2, ...)
? Returing [result1, result2, ...]
from async.cps
won't do the trick, obviously. There may be some async.cps
variant, e.g. async.starCps
.
from asyncawait.
Related Issues (20)
- Fibers are more flexible(?) HOT 18
- Use with ES6 classes #2 HOT 1
- Not working on nw.js HOT 1
- Error: await functions, yield functions, and value-returning suspendable functions. HOT 1
- setTimout example? HOT 2
- Unexpected token function HOT 6
- Fiber not running HOT 1
- why so long time require this two packages? HOT 1
- Extra parentheses? HOT 2
- fibers v1.0.16 dependency breaks node 4.x HOT 1
- Using a for loop HOT 2
- await inside an awaited function
- Stuck within await()... HOT 2
- Installation issue on node version 9.0.0 HOT 1
- Using forEach with Callbacks function
- Not an issue, just a thank you. HOT 1
- asyncawait fails to build on Ubuntu 16.04.4 LTS HOT 3
- Examples in typescript HOT 1
- Upgrade fibers package for nodejs 10.x or 12.x HOT 6
- Await behavior in non Async function or normal function HOT 1
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.
from asyncawait.