Comments (6)
Does connection.query
also return a promise? If not, you'll have to make a version that does return a promise first. I don't know what DB library you are using so I'll assume it doesn't return promises. knex.js
returns Promises so if you can use that I recommend it, as the code will interoperate much more easily with async/await style.
Anyhow, if your connection.query
method only takes callbacks, then do something like this first:
// NB: if you are using iojs, Promise is already defined as a global
var Promise = require('bluebird');
function getTitles() {
return new Promise(function (resolve, reject) {
connection.query('SELECT * FROM titles', function (err, rows) {
if (err) return reject(err);
resolve(rows);
});
});
}
Then you can write some other async function that calls getTitles
like this:
var doStuffAsync = async (function () {
...
var titles = await (getTitles());
...
var result = someOtherFunc(titles);
return result;
});
When called, doStuffAsync
will return a promise of its result.
On the other hand, if connection.query
returned a promise directly, you wouldn't need getTitles
at all, you could just do:
var doStuffAsync = async (function () {
...
var titles = await (connection.query('SELECT * FROM titles'));
...
var result = someOtherFunc(titles);
return result;
});
from asyncawait.
Thanks! tomorrow, as will certainly try and describe the time.
ps its mysql connection https://www.npmjs.com/package/mysql
from asyncawait.
FYI, there are some promise-oriented wrappers for the mysql
library:
I suggest using one of these, since they will work directly with async/await. No need to manually wrap or 'promisify' anything.
from asyncawait.
I get to set the old python. I liked more your way, but tell me if I can call a doStuffAsync func in addition? Why it again operates asynchronously, and I do not get the desired result (
from asyncawait.
doStuffAsync()
is an ordinary (but asynchronous) function that returns a promise. The promise instance is what you can see in your screenshot above.
You need to await the asynchronous function call to suspend the caller until the promise resolves - ie titles = await (doStuffAsync())
.
It's important to understand that to use await
you need to be inside the definition of another async
function. That is because suspending a function requires some kind of coroutine support, which normal functions do not provide, hence the async
wrapper function.
That means that your outermost layer of functionality (perhaps the API you expose to your module's consumers) would still expose promise-returning functions.
So if doStuffAsync()
was some public method, consumers would use it like a normal promise-returning function, ie doStuffAsync().then(function (result) { ... })
.
from asyncawait.
Closing this as there seems no further action to be taken. Feel free to open another issue if you have more questions.
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.