javascript - 转到下一条指令,直到函数完成(Node Js)
问题描述
我在 Node js 中有一个代码,它连接到一个 mysql 数据库并插入数据,但是,我有一个问题,有时它运行得如此之快,跳过了这些步骤,我希望它在完成插入时退出它的功能,在完成之前不要转到下一条指令。然后我留下我的代码。
con.getConnection(function(err) {
if (err) throw err;
console.log("Conectado!");
});
function insertarpost()
{
return new Promise(function(resolve, reject) {
var sql = "INSERT INTO `wp_posts` ( `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`,`post_excerpt`, `post_status`, `comment_status`, `ping_status`,`post_password`, `post_name`,`to_ping`,`pinged`, `post_modified`, `post_modified_gmt`,`post_content_filtered`,`post_parent`, `guid`,`menu_order`, `post_type`, `post_mime_type`,`comment_count`) VALUES (1, '"+fhoy+"', '"+fhoy+"', ' ', '"+titulocomilla+"','', 'publish', 'open', 'closed','','"+zlug+"','','', '"+fhoy+"', '"+fhoy+"','', '"+co+"','','0', 'oposiciones','' ,0);";
con.query(sql, function (err, result) {
if (err) throw err;
resolve(result);
console.log("1 registro insertado");
});
});
}
setTimeout(insertarpost, 1500);
setTimeout(obtenerultimopostid, 1500);
function obtenerultimopostid() {
con.query("SELECT ID FROM wp_posts ORDER BY ID DESC LIMIT 0,1;", function (err, result, fields) {
var sql = "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES ("+result[0].ID+",'nº_plazas', '"+nplazascomilla+"'),("+result[0].ID+",'observaciones', '"+observacionescomilla+"'), ("+result[0].ID+",'descargar_documento_oficial', '"+linkdescarga+"'), ("+result[0].ID+",'plazo_de_instancias', '"+plazasincomilla+"'), ("+result[0].ID+",'ambito', '"+categoriacomilla+"'), ("+result[0].ID+",'tipo', '"+tipocomilla+"'), ("+result[0].ID+",'origen', '"+origencomilla+"'),("+result[0].ID+",'grupo', '"+grupocomilla+"'), ("+result[0].ID+",'fecha_de_publicacion', '"+fpublicacion+"'), ("+result[0].ID+",'convocante', '"+convocantecomilla+"');";
con.query(sql, function (err, result) {
//if (err) throw err;
console.log("1 registro wpmeta insertado");
});
var sql = "INSERT INTO wp_term_relationships (`object_id`, `term_taxonomy_id`, `term_order`) VALUES ("+result[0].ID+", '"+co+"', '0');";
con.query(sql, function (err, result) {
//if (err) throw err;
console.log("1 registro de categoria insertado");
});
});
}
解决方案
如果我正确理解了您的问题,您希望在obtenerultimopostid
函数insertarpost
完成后调用该函数。
如果是这种情况,您可以使用从insertarpost
函数返回的 Promise 对象:
insertarpost().then(obtenerultimopostid())
推荐阅读
- sql-server - SQL Server:根据开始和结束日期将一行分成几行
- google-analytics - 如何在 Nuxt Head 和 Body 中动态添加自定义脚本代码?
- javascript - Vuetify 的 v-expand-transition 没有 v-show/v-if?
- spring - Spring singleton bean 的值与用户共享
- android - react-native 找不到 android-studio
- django - 从表单中读取图像,然后使用 tesseract 提取标题
- node.js - 下载某个帐户拥有并与我的服务帐户共享的 Google Drive 文件
- java - java.lang.ClassNotFoundException:org.codehaus.jettison.json.JSONObject 错误
- ckeditor - TYPO3 9/10 的 ckeditor 中的 span、strong、em
- java - 使用 poi-scratchpad MAPIMessage 从 MSG 文件中获取电子邮件地址