问个原生JS的调用问题卡这了,在线等急!!!!!!!!!!!!!!!!!!!

WEB菜鸟
  • 276

1.公司封装的JS框架,给了个存储过程我让我调用交互,现在是解析出来了不知道怎么调用....
2.这是我JS逻辑代码的模块需要调数据:

function SampleTime() {
    //时间轴
    var cirlie = document.querySelectorAll('.top');
    for (let v of cirlie) {
        v.classList.add('style');
        v.onmousemove = function() {
            this.classList.add('color');
        }
        v.onmouseout = function() {
            this.classList.remove('color');
        }
    }
    var leftBox = document.querySelectorAll('.left');
    for (let v of leftBox) {
        v.classList.add('styles');
        v.onmousemove = function() {
            this.classList.add('colors');
        }
        v.onmouseout = function() {
            this.classList.remove('colors');
        }
    }
}

3.这是我解析数据的模块已经获取到字段名和值了,就是不知道怎么往逻辑代码里面调用..

// 交互模塊
SampleTime.prototype.getSampleStateBySampleNo = function() {
    //直接调用Procedure存储过程
    var Request = Global.NewMessage();
    console.log(Request)
    Request.ProcedureName = "[proc_datalink_getsample_module]";
    Request.ParameterNames = ["SampleNo"];
    Request.ParameterDataTypes = ["int"];
    Request.ParameterValues = [1];

    //获取数据
    //PostMessage 异步需回调
    let Return = Global.SendMessage("DB_CallProcedure", Request);
    let Returns = Return.Table0;
    console.log(Returns)
    //获取字段名
    this._fieldsTitle = [];
    this._fieldsTitle = Returns._fieldsTitle;
    console.log(this._fieldsTitle[0]);
    //获取值
    this._rowsData = [];
    this._rowsData = Returns._rowsData;
    for (let datas of this._rowsData) {
        console.log(datas[3]);
    }
}

SampleTime.prototype.getSampleStateBySampleNo();
回复
阅读 1.5k
3 个回答
✓ 已被采纳

第二段代码里有这么一句://PostMessage 异步需回调,也就是说,需要知道 Global.SendMessage() 的回调是怎么定义的才知道该如何去写回调。假设回调是其最后一个参数,传入回调的就是 Return,那么写法应该是像这样

Global.SendMessage("DB_CallProcedure", Request, Return => {
    const Returns = Return.Table0;
    // ....
});

看你的代码,不像是异步。

非异步的情况下,解析好的数据直接回返就好。比如 return this._rowsData,当然由于这个值赋给了属性,所以也可以在其它地方直接调用(_xxx 一般表示私有属性,所以应该是在其它方法中调用,方法通过 prototype.xxxx = function() {} 定义)

但是在异步情况下,就需要通过回调,或者 Promise 等方式来向后续步骤传递数据,关于这个可以参考阅读一下这篇博客。具体到这个问题,可以这样定义

SampleTime.prototype.getSampleStateBySampleNo = function(callback) {
    // .....
    if (typeof callback === "function") {
        callback(this._rowData);
    }
}
Avro
  • 636

callback-回调.


this._rowsData.foreach(v=>document.querySelector("<selector>").value = v.xxx)

prototype应该就是对象的属性,直接SampleTime.getSampleStateBySampleNo();就完事了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏