jscex使用出错,求高手指导
发布于 13 年前 作者 huangdh3 4638 次浏览 最后一次编辑是 8 年前
var Jscex = require("jscex");
require("jscex-jit").init(Jscex);
require("jscex-async").init(Jscex);
require("jscex-async-powerpack").init(Jscex);
var Jscexify = Jscex.Async.Jscexify;
var Client = require('mysql').Client;


client.queryAsync = Jscexify.fromStandard(client.query);
function BaseModel(){
table = "t_user";
var tableMsg = getTableConfigFromJson(table);
this._table      = table;
this._key        = tableMsg['key'];
this._tableConfig = tableMsg['value'];

this.add = eval(Jscex.compile("async",function(jsonValue){
var addMsg = changeJsonToString(jsonValue);
    var sql = 'INSERT INTO ' + tableName + "(" + addMsg["key"] +") values(" + addMsg["value"] +")";
    //client.queryAsync = Jscexify.fromStandard(client.query);
    var result = $await(client.queryAsync(sql));
console.log(result.insertId);
    return result.insertId;
console.log("1");
return "22";
}));

希望使用jscex来同步数据库执行操作,但是一直返回一个这个信息

{ id: 1, _delegate: [Function], _listeners: {}, status: ‘ready’ }

1 回复

1、这个返回的是一个task对象,需要调用其start()方法才开始执行的

this.add = eval(Jscex.compile("async",function(jsonValue){

2、在上面的函数体里面可以像阻塞方式来写程序,但其实际上还是异步执行的,因此this.add()必须通过回调函数来返回数据,比如:

// 这个是task对象 $await语句必须在这里面才能生效
this.addAsync = eval(Jscex.compile("async",function(jsonValue, callback){
  // 执行多个插入数据库操作
  var result1 = $await(client.queryAsync('SQL语句'));
  var result2 = $await(client.queryAsync('SQL语句'));
  var result3 = $await(client.queryAsync('SQL语句'));
  // 回调函数返回
  callback(result1, result2, result3);
}));

// 这个是用于一般调用方式的接口
this.add = function (jsonValue, callback) {
  // task对象需要执行start()来运行
  this.addAsync(jsonValue, callback).start();
}

3、你应该从头拜读老赵写的Jscex系列文章

不知道这样解释是否正确,求@老赵 直到

回到顶部