कयामत के पिरामिड से बचना चाहिए:
var express = require('express');
var Q = require('Q');
var app = express();
app.get('/',function(req,res){
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : ''
});
connection.connect();
function doQuery1(){
var defered = Q.defer();
connection.query('SELECT 1 AS solution',defered.makeNodeResolver());
return defered.promise;
}
function doQuery2(){
var defered = Q.defer();
connection.query('SELECT 2 AS solution',defered.makeNodeResolver());
return defered.promise;
}
Q.all([doQuery1(),doQuery2()]).then(function(results){
res.send(JSON.stringify(results[0][0][0].solution+results[1][0][0].solution));
// Hint : your third query would go here
});
connection.end();
});
app.listen(80);
console.log('Listening on port 80');
यह नमूना एक परिणाम दिखाता है जो 2 स्वतंत्र गणना मूल्यों पर निर्भर करता है। इनमें से प्रत्येक मान doQuery1 और doQuery2 में पूछे गए हैं। उन्हें अनुक्रम में निष्पादित किया जाता है, लेकिन अतुल्यकालिक रूप से।
आगे आप देख सकते हैं Q.all(...
जो मूल रूप से सफलता पर "तब" कॉलबैक कहते हैं। उस कॉलबैक के भीतर, गणना की जाती है।
वादों का उपयोग करना (विवरण:Github Q:Javascript के लिए वादा और विकिपीडिया ) अपने कोड को साफ-सुथरा बनाने, परिणामों की गणना और प्रबंधन को अलग करने और चीजों को इधर-उधर करने की अनुमति दें।
देखें कि आपकी गणना के लिए "doQuery3" को पूर्व-आवश्यकता के रूप में जोड़ना कितना आसान होगा!
और नमूना कोड से संबंधित "package.json" को बोलें:
{
"name": "hello-world",
"description": "hello world test app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.2.0",
"q": "0.9.3",
"mysql":"2.0.0-alpha7"
}
}