为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

吃鸡游戏 2019-02-18 17:24:20
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();
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

第二段代码里有这么一句://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);
    }
}
查看完整回答
反对 回复 2019-03-01
?
UYOU

TA贡献1878条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 459 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号