Я работаю над node.js с выраженной фреймворкой, и я пытаюсь вызвать несколько запросов mysql, и каждый запрос зависит от предыдущих запросов. Как выполнить запрос синхронно.Синхронный запрос с запросом mysql в nodejs
function f1(id, cb) {
$sql = "SELECT * FROM s1 where process_id=" +id;
connection.query(
$sql,
function (err, result) {
if (err) {
cb(err, null);
} else {
var str = '';
if (result.length > 0) {
for(val in result) {
$sql = "SELECT attribute_name FROM s2 where id=" + result[val].id;
connection.query(
$sql,
function (err, attrresult) {
if (err) {
cb(err, null);
} else {
if (result.length > 0) {
str += attrresult[0].attribute_name;
}
}
}
);
}
}
cb('', str);
}
}
);
}
router.get('/', function(req, res, next) {
f1('27', function (err,respose) {
console.log(respose);
});
});
Прошу предложить. Как мы можем это сделать.
Заранее спасибо.
В вашем решении 'mySexyMethod' и' anotherPromiseThatRequiresPreviousVal' будут выполняться параллельно. Вы не можете использовать результат первого во втором. Более того, ваше решение кажется неполным, потому что вы определяете свое обещание, но никогда не используете его. – Gnucki
@ Gnucki - Nope. Он будет ждать. Смотрите, что «выход», он гарантирует, что все, что вы получили после этого, ждет. Я вроде как полностью использую 'mySexyMethod'. Посмотрите генераторы и обещания. Вы можете поблагодарить меня позже. –
Извините, мой плохой, я слишком краснею и не видел, чтобы вы использовали 'co-express'. Это интересное решение. – Gnucki