首页 > 解决方案 > 转到下一条指令,直到函数完成(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");
  });
});
}

标签: javascriptmysqlnode.js

解决方案


如果我正确理解了您的问题,您希望在obtenerultimopostid函数insertarpost完成后调用该函数。

如果是这种情况,您可以使用从insertarpost函数返回的 Promise 对象:

insertarpost().then(obtenerultimopostid())

推荐阅读