鍍金池/ 問答/HTML5  Java  C++  HTML/ 問個(gè)原生JS的調(diào)用問題卡這了,在線等急!!!!!!!!!!!!!!!!!!!

問個(gè)原生JS的調(diào)用問題卡這了,在線等急!!!!!!!!!!!!!!!!!!!

1.公司封裝的JS框架,給了個(gè)存儲(chǔ)過程我讓我調(diào)用交互,現(xiàn)在是解析出來了不知道怎么調(diào)用....
2.這是我JS邏輯代碼的模塊需要調(diào)數(shù)據(jù):

function SampleTime() {
    //時(shí)間軸
    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.這是我解析數(shù)據(jù)的模塊已經(jīng)獲取到字段名和值了,就是不知道怎么往邏輯代碼里面調(diào)用..

// 交互模塊
SampleTime.prototype.getSampleStateBySampleNo = function() {
    //直接調(diào)用Procedure存儲(chǔ)過程
    var Request = Global.NewMessage();
    console.log(Request)
    Request.ProcedureName = "[proc_datalink_getsample_module]";
    Request.ParameterNames = ["SampleNo"];
    Request.ParameterDataTypes = ["int"];
    Request.ParameterValues = [1];

    //獲取數(shù)據(jù)
    //PostMessage 異步需回調(diào)
    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();
回答
編輯回答
你的瞳

callback-回調(diào).


this._rowsData.foreach(v=>document.querySelector("<selector>").value = v.xxx)
2018年5月16日 05:04
編輯回答
貓小柒

prototype應(yīng)該就是對(duì)象的屬性,直接SampleTime.getSampleStateBySampleNo();就完事了

2018年2月14日 06:44
編輯回答
忘了我

第二段代碼里有這么一句://PostMessage 異步需回調(diào),也就是說,需要知道 Global.SendMessage() 的回調(diào)是怎么定義的才知道該如何去寫回調(diào)。假設(shè)回調(diào)是其最后一個(gè)參數(shù),傳入回調(diào)的就是 Return,那么寫法應(yīng)該是像這樣

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

看你的代碼,不像是異步。

非異步的情況下,解析好的數(shù)據(jù)直接回返就好。比如 return this._rowsData,當(dāng)然由于這個(gè)值賦給了屬性,所以也可以在其它地方直接調(diào)用(_xxx 一般表示私有屬性,所以應(yīng)該是在其它方法中調(diào)用,方法通過 prototype.xxxx = function() {} 定義)

但是在異步情況下,就需要通過回調(diào),或者 Promise 等方式來向后續(xù)步驟傳遞數(shù)據(jù),關(guān)于這個(gè)可以參考閱讀一下這篇博客。具體到這個(gè)問題,可以這樣定義

SampleTime.prototype.getSampleStateBySampleNo = function(callback) {
    // .....
    if (typeof callback === "function") {
        callback(this._rowData);
    }
}
2017年11月4日 03:20