O recurso está a ser carregado... Carregamento...

Outras estruturas

HttpQuery-opções

Esta estrutura JSON é usada para configurar os parâmetros da função HttpQuery e da função HttpQuery_Go para enviar a solicitação Http.

Método de pedido, por exemplo:GET, POST, etc. Método cordel Por exemplo, em uma solicitação POST, o corpo pode conter dados de formulário, JSON, texto, etc. corpo cordel Codificação do conjunto de caracteres. Por exemplo, especifique a codificação dos dados de texto no corpo como:"UTF-8"- Não. Charset cordel Um cookie é um pequeno pedaço de dados usado para armazenar e trocar informações de estado entre um cliente (geralmente um navegador) e um servidor. biscoito cordel Usado para simular a impressão digital do navegador. Perfil cordel Quando definido como verdadeiro, a chamada da função HttpQuery retorna a mensagem de resposta completa. debug Bool As informações de cabeçalho de solicitação existem na forma de pares chave-valor (estrutura JSON) e são usadas para transmitir várias informações, como tipo de conteúdo, informações de autenticação, controle de cache, etc. cabeçalhos JSON Configuração de tempo de espera. tempo de espera Número

Exemplo de utilização:

function main() {
    var options = {
        method: "POST",
        body: "a=10&b=20&c=30",
        charset: "UTF-8",
        cookie: "session_id=12345; lang=en",
        profile: "chrome_103",
        debug: false,
        headers: {"TEST-HTTP-QUERY": "123"},
        timeout: 1000
    }
    var ret = HttpQuery("http://127.0.0.1:8080", options)
    Log(ret)
}

A mensagem http enviada quando o código acima é executado:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br

e
a=10&b=20&c=30
0

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

HttpQuery-return

Esta estrutura JSON é a estrutura de dados devolvida pela função HttpQuery no modo de depuração quando o campo de depuração nooptionsParâmetro de estrutura é verdadeiro.

Código de estado http Código de estado Número Solicitar informações de cabeçalho. Título JSON Informações sobre cookies. Cookies matriz Informações completas sobre o caminho da solicitação. Traça JSON Comprimento da mensagem Duração Número Conteúdo da mensagem. Corpo cordel

Um exemplo da estrutura de dados JSON retornada é:

{
    "StatusCode": 302,
    "Header": {
        "Content-Type": ["text/html"],
        // ...
    },
    "Cookies": [{
        // ...
    }],
    "Trace": {},
    "Length": 154,
    "Body": "..."
}

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

Tabela LogStatus

Esta estrutura JSON é utilizada para configurar o conteúdo da tabela exibido na barra de estado da estratégia.

Usado para definir o tipo de interface do usuário e os controles a serem analisados e exibidos.table- Não. Tipo cordel Usado para definir o título da tabela da barra de estado. Título cordel Usado para definir os títulos das colunas da tabela da barra de status. Cebolinha matriz Usado para definir os dados de linha da tabela de barras de estado. O primeiro elemento da matriz de linhas (matriz bidimensional) também é uma estrutura de matriz. O comprimento desta estrutura de matriz deve ser consistente com o número de colunas da tabela (os elementos na estrutura da matriz correspondem aos nomes das colunas da tabela um por um), ou seja, a primeira linha de dados na tabela. linhas matriz

function main() {
    var tbl = {
        type: "table", 
        title: "title", 
        cols: ["Column 1", "Column 2", "Column 3"], 
        rows: [
            ["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
            ["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
            ["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
        ]
    }
    LogStatus("`" + JSON.stringify(tbl) + "`")
}

Não, não, não, não.

LogStatus-btnTypeOne

Esta estrutura JSON é usada para configurar o controle do botão na barra de status. A estrutura JSON do controle do botão pode ser incorporada na estrutura JSON da tabela de barra de status. Esta estrutura é uma estrutura de versão antiga, e a plataforma ainda é compatível. Recomenda-se usar a versão mais recente da estrutura JSON do botão. Exemplo de construção de um comando do botão da barra de estado (depois de o botão ser acionado e clicado, a caixa pop-up contém um único comando de entrada, que é construído através do campo de entrada):

{
    "type": "button", 
    "cmd": "open", 
    "name": "opening a position", 
    "input": {
        "name": "number of opening positions", 
        "type": "number", 
        "defValue": 1
    }
}

Os controles na caixa pop-up desencadeada clicando no botão da barra de estado são definidos através doinputougroup.

Para os comandos de botão, a configuração fixa é:button- Não. Tipo cordel Configurações do tipo de botão Classe cordel O texto no comando do botão, ou seja, o nome do botão. nome cordel O conteúdo do comando interativo enviado para a estratégia quando o controle do botão desencadeia uma operação de clique. cmd cordel A descrição do comando do botão. A descrição é exibida quando o mouse é colocado no botão na barra de status. Descrição cordel Configura o botão para desativado (verdadeiro) / habilitado (falso). deficientes Bool Quando se constrói um botão da barra de estado para interação, a entrada de dados também é suportada.GetCommand()adicionar oinputitem para a estrutura de dados JSON do comando do botão na barra de status para configurar o comando de entrada na caixa pop-up exibida quando o botão é acionado. Por exemplo, para definir o valor doinputCampo:

{
    "name": "Number of opening positions", 
    "type": "number", 
    "defValue": 1,
    "description": "test",                  
}

Descrição de cada campo na estrutura JSON acima:

  • nome O título do controle na caixa pop-up que aparece após o botão da barra de status desencadeia uma operação de clique.
  • Descrição Descrição do controlo na caixa pop-up que aparece após o botão da barra de estado desencadear uma operação de clique.
  • Tipo O tipo de controle na caixa pop-up que aparece após o botão da barra de status desencadear uma operação de clique. Os valores possíveis do campo tipo são os seguintes:
    1. "number"- Controle de entrada numérica.
    2. "string"- Controle de entrada de string.
    3. "selected"- Controle de caixa suspensa.
    4. "boolean"Mudança de comando.
  • defValue O valor padrão do controle na caixa pop-up que aparece após o botão da barra de status desencadear uma operação de clique. Se for um controle de tipo de caixa suspensa (selecionado), o campo defValue é usado para definir as opções da caixa suspensa."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, a descrição textual das opções da caixa suspensa é definida em A, B, C.

Para os campos alargados pelo controlo do tipo da caixa suspensa:

  • opções O controle de caixa suspensa na página desencadeada pelo controle do botão da barra de status pode usar o campo de opções para definir opções.{text: "description", value: "value"}Use o campo defValue para definir a opção padrão, que pode ser múltiplas seleções.
  • múltipla Quando este campo é definido como verdadeiro, são suportadas múltiplas seleções na caixa suspensa.

entrada JSON Oinputcampo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.groupeinputA função principal do sistema é a configuração de um grupo de comandos.groupter a mesma estrutura de dados que ainputValor do campo.input field.

grupo matriz

Um exemplo declassvalor da estrutura JSON de um botão na barra de estado:

function main() {
    var table = {
        type: "table",
        title: "Status bar button style",
        cols: ["Default", "Original", "Success", "Information", "Warning", "Danger"], 
        rows: [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "Default"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "Original"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "Success"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "Information"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
            ]
        ]
    }
    LogStatus("`" + JSON.stringify(table) + "`")
}

Exemplo de utilização dogroupcampo com oinputCampo:

function main() {
    // The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
    var testBtn1 = {
        type: "button",
        name: "testBtn1",
        cmd: "cmdTestBtn1",
        input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
    }
  
    /* 
      Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
      it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
    */
    var testBtn2 = {
        type: "button", 
        name: "testBtn2",
        cmd: "cmdTestBtn2",
        input: {
            name: "testBtn2MultiComboBox", 
            type: "selected", 
            description: "Implementing multiple selection in drop-down box", 
            options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
            defValue: ["A", "C"],
            multiple: true
        }
    }
  
    // Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
    var testBtn3 = {
        type: "button",                     
        name: "testBtn3",
        cmd: "cmdTestBtn3", 
        group: [
            {name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]}, 
            {name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"}, 
            {name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, 
            {
                name: "comboBox4", 
                label: "labelComboBox4", 
                description: "Drop-down box 4", 
                type: "selected", 
                defValue: ["A", "C"], 
                multiple: true, 
                options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
            }
        ]
    }
    while (true) {
        LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
        var cmd = GetCommand()
        if (cmd) {
            Log(cmd)
        }
        Sleep(5000)
    }
}

Não, não, não, não.

LogStatus-btnTypeTwo

Esta estrutura JSON é usada para configurar o controle do botão na barra de status. A estrutura JSON do controle do botão pode ser incorporada na estrutura JSON da tabela de barra de status. Exemplo de construção de um comando do botão da barra de estado (depois de o botão ser acionado e clicado, a caixa pop-up contém vários controles de entrada, que são construídos através do campo de grupo):

{
    "type": "button",
    "cmd": "open",
    "name": "Open a position and place an order",
    "group": [{
        "type": "selected",
        "name": "tradeType",
        "label": "order type",
        "description": "market order, limit order",
        "default": 0,
        "group": "trading setup",
        "settings": {
            "options": ["market order", "limit order"],
            "required": true,
        }
    }, {
        "type": "selected",
        "name": "direction",
        "label": "trading direction",
        "description": "buy, sell",
        "default": "buy",
        "group": "trading setup",
        "settings": {
            "render": "segment",
            "required": true,
            "options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
        }
    }, {
        "type": "number",
        "name": "price",
        "label": "price",
        "description": "order price",
        "group": "trading setup",
        "filter": "tradeType==1",
        "settings": {
            "required": true,
        }
    }, {
        "type": "number",
        "name": "amount",
        "label": "order quantity",
        "description": "order quantity",
        "group": "trading setup",
        "settings": {
            "required": true,
        }
    }],
}

Os controles na caixa pop-up desencadeada clicando no botão da barra de estado são definidos através doinputougroup.

Para os comandos de botão, a configuração fixa é:button- Não. Tipo cordel O texto no comando do botão, ou seja, o nome do botão. nome cordel O conteúdo do comando interativo enviado para a estratégia quando o controle do botão desencadeia uma operação de clique. cmd cordel Quando se constrói um botão da barra de estado para interação, a entrada de dados também é suportada.GetCommand()adicionar oinputitem para a estrutura de dados JSON do comando do botão na barra de status para configurar o comando de entrada na caixa pop-up exibida quando o botão é acionado. Em comparação com a versão antiga da estrutura de entrada, a nova versão tem alguns novos campos e alterações:

{
    "type": "selected",
    "name": "test",         
    "label": "topic",       
    "description": "desc",  
    "default": 1,
    "filter": "a>1",
    "group": "group1",
    "settings": { ... },    // Component configuration
}

Descrição e explicação de cada campo na estrutura JSON acima:

  • Tipo Tipo de comando (campo obrigatório), suporta as seguintes definições:"number"caixa de entrada numérica,"string"caixa de entrada de string,"selected"caixa suspensa,"boolean"Troque de comando.

  • nome Se a estrutura JSON atual for o valor do campo do campo de entrada, quando o campo de rótulo não estiver definido, o nome é o título do controle na caixa pop-up que aparece após clicar no botão da barra de status. Se a estrutura JSON atual for um elemento no valor do campo (estrutura de matriz) do campo de grupo, o nome não é usado como título do controle. O campo de nome é usado para indicar o nome do campo do conteúdo da entrada do controle. Por exemplo, um trecho do campo de grupo é usado como ilustração:

    var testBtn3 = {
        type: "button",                     
        name: "testBtn3",
        cmd: "cmdTestBtn3", 
        group: [
            {name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]}, 
            {name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"}, 
            {name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, 
            {
                name: "comboBox4", 
                label: "labelComboBox4", 
                description: "Drop-down box 4", 
                type: "selected", 
                defValue: ["A", "C"], 
                multiple: true, 
                options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
            }
        ]
    }
    

    De acordo com este trecho, se o botão da barra de status desencadear uma interação, uma caixa pop-up aparecerá com 4 controles, todos eles controles de caixa suspensa.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}- Não. O valor de nome na estrutura JSON é usado como o nome do campo da informação interativa devolvida, por exemplo: comboBox1, comboBox2, etc.

  • etiqueta Usado para definir o título do controlo.

  • Descrição Descrição do controle. Se a estrutura JSON atual for um elemento no valor do campo (estrutura de matriz) do campo de grupo, e o campo de rótulo não for definido, a descrição é o título do controle na caixa pop-up que aparece após o botão da barra de status ser clicado.

  • padrão Valor por defeito do comando.

  • filtro Selector, usado para ocultar controles. Não definir este campo significa que não há filtragem (exibir controles); quando este campo é definido, não ocorre filtragem (exibir controles) quando a expressão é verdadeira. Quando a expressão é falsa, ocorre filtragem (não exibir controles)

  • grupo Utilizado para controlar o agrupamento de controles, que podem ser dobrados.

  • configurações Configuração de componentes, o controle tem uma variedade de opções de interface do usuário, use esta opção para fazer configurações específicas.

    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
    

    Configurações: Configurações.requeridas: Se é necessário. configurações.disabled: Desativar ou não. settings.min: válido quando type=number, indicando o valor mínimo ou o comprimento mínimo de uma cadeia. settings.max: válido quando type=number, indicando o valor máximo ou o comprimento máximo de uma cadeia. configurações.step: válido quando type=number e render=slider, indicando o comprimento do passo. settings.multiple: válido quando tipo= selecionado, indicando que são suportadas seleções múltiplas. settings.customizable: É válido quando o tipo = selecionado, indicando que a personalização é suportada; os usuários podem editar e adicionar novas opções diretamente no controle da caixa suspensa. settings.options: válido quando o tipo= for selecionado, indicando o formato de dados da opção do selector: [opção 1, opção 2], [{name:xxx,value:0}, {name:xxx,value:1}]. configurações.renderização: Tipo de componente de renderização. Quando o tipo=número, settings.render não estiver definido (caixa de entrada de número padrão), opcional: deslizador (barra deslizante), data (o selector de hora retorna o carimbo de hora). Quando type=string, settings.render não está definido (caixa de entrada de linha única padrão), opcional: textarea (entrada de várias linhas), data (selector de tempo retorna yyyy-MM-dd hh:mm:ss), cor (selector de cores retorna #FF00FF). Quando tipo= selecionado, settings.render não está definido (caixa suspensa padrão), opcional: segmento (selector de segmentos). Quando type=boolean, há atualmente apenas uma caixa de seleção padrão.

entrada JSON Oinputcampo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.groupeinputA função principal do sistema é a configuração de um grupo de comandos.groupter a mesma estrutura de dados que ainputValor do campo.input field.

grupo matriz

Suporte para configurações bilíngues:

{
    type:'selected',
    name:'test',
    label:'选项|options',
    description:'描述|description',
    default:0,                            // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
    filter:'a>1&&a<10',
    group:'分组|group',
    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
}

Não, não, não, não.

Opções de gráfico

Este JSON é usado para definir as informações de configuração do gráfico da função de desenho personalizadoChart()A biblioteca de gráficos usada é Highcharts. Somente alguns campos de configuração básicos são listados aqui.

Campo de extensão da plataforma. definido como verdadeiro para usar gráficos Highstocks; definido como falso para usar gráficos Highcharts.

__isPropriedade cordel

{
    layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
    height: 300,      // Specify height
}

Extensão JSON Título do gráfico Título cordel Configuração do eixo X. xEixo JSON Configuração do eixo Y. eixo y JSON Série de dados gráficos. Série JSON

Um exemplo de desenho simples:

// This chart is an object in JavaScript language. Before using the Chart function, we need to declare an object variable chart to configure the chart.
var chart = {                                           
    // This field marks whether the chart is a general chart. If you are interested, you can change it to false and run it.
    __isStock: true,                                    
    // Zoom tool
    tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},    
    // title
    title : { text : 'Price difference analysis chart'},                       
    // Select range
    rangeSelector: {                                    
        buttons:  [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
        selected: 0,
        inputEnabled: false
    },
    // The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
    xAxis: { type: 'datetime'},                         
    // The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
    yAxis : {                                           
        // title
        title: {text: 'Price difference'},                           
        // Whether to enable the right vertical axis
        opposite: false                                 
    },
    // Data series, this property saves each data series (line, K-line chart, label, etc.)
    series : [                                          
        // The index is 0, and the data array stores the data of the index series.
        {name : "line1", id : "line 1,buy1Price", data : []},                          
        // The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
        {name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}  
    ]
}
function main(){
    // Call the Chart function to initialize the chart
    var ObjChart = Chart(chart)         
    // Clear
    ObjChart.reset()                      
    while(true){
        // Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
        var nowTime = new Date().getTime()
        // Get market data
        var ticker = _C(exchange.GetTicker)
        // Get the buy price from the return value of the market data
        var buy1Price = ticker.Buy    
        // Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
        var lastPrice = ticker.Last + 1
        // Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
        ObjChart.add(0, [nowTime, buy1Price])
        // Same as above
        ObjChart.add(1, [nowTime, lastPrice])
        Sleep(2000)
    }
}

Não, não, não, não.

Opções KLineChart

Este JSON é usado para definir as informações de configuração do gráfico da função de desenho personalizadoKLineChart. Somente alguns campos de configuração básicos são listados aqui.

Se desenhar no gráfico principal. sobreposição Bool Configuração do eixo X. xEixo JSON Configuração do eixo Y. eixo y JSON Configuração do gráfico de velas. candeia JSON

Por favor, consulteArtigo especial sobre o desenho de gráficos usando a função KLineChart.

Não, não, não, não.

SetData-data

O JSON é utilizado para definir os dados a serem carregados peloexchange.SetData()Os dados JSON são uma estrutura de matriz, em que cada elemento é também uma matriz, ou seja,[time, data].

O carimbo de data dos dados, marcando a data desses dados. tempo Número dados é um pedaço de dados correspondente a um determinado tempo nos dados carregados peloexchange.SetData()A estratégia é executada, aexchange.GetData()Função obtém os dados com o carimbo de hora correspondente de acordo com a hora atual.

dados string, número, bool, objeto, matriz, etc.

Um exemplo de carregamento de dados no sistema de backtesting e recuperação de dados quando o backtest de estratégia está sendo executado:

/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
    exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
    while(true) {
        Log(exchange.GetData("test"))
        Sleep(1000 * 60 * 60 * 24)
    }
}

Não, não, não, não.

EventLoop-retorno

Este JSON é a estrutura de dados devolvida peloEventLoop()AEventLoop()Monitores de funções: 1. Qualquer evento de dados legível pelo WebSocket; 2. Eventos de conclusão de tarefas simultâneos com as funções exchange.Go() e HttpQuery_Go(); 3. Eventos de mensagem enviados em threads criados pelothreading.Thread()função na estratégia da linguagem JavaScript.

Número de sequência do evento. Seq Número Nome do evento. Evento cordel Identificador de thread do evento. - Não. Número Índice de eventos. Índice Número Nano-horário. Nano Número

Utilize oexchange.Go()função para fazer solicitações simultâneas e a estrutura de dados do evento devolvido peloEventLoop() function.

{
    "Seq":1,
    "Event":"Exchange_GetTrades",
    "ThreadId":0,
    "Index":3,
    "Nano":1682068771309583400
}

Na linha executada simultaneamente da estratégia da linguagem JavaScript (criada pelothreading.Thread()Função), quando opostMessage()função do objeto do thread é usado para enviar uma mensagem, oEventLoop()A função no tópico que recebe a mensagem monitorará a seguinte estrutura de dados de eventos:

{
    "Seq":4,
    "Event":"thread",
    "ThreadId":1,
    "Index":0,
    "Nano":1727592066508674000
}

Não, não, não, não.

DBExec-return

Este JSON é a estrutura de dados devolvida peloDBExec()função; também é devolvido quando executar uma instrução SQL usando oexec()método do objeto criado peloDial() function.

Os nomes das colunas dos dados a serem consultados, uma matriz de strings. colunas matriz O valor do campo de valores é uma matriz bidimensional, onde cada elemento é uma matriz e um registro de dados. valores matriz

Exemplo de consulta de dados na base de dados:

{
    "columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
    "values":[
        [1518970320000,100,99.1,90,100,12345.6],
        [1518960320000,100,99.1,90,100,12345.6]
    ]
}

Não, não, não, não.

Thread.join-return

Este JSON é a estrutura de dados devolvida pela função membrojoin()doThreadObjeto, que salva algumas informações sobre tópicos concorrentes noJavaScriptEstratégia linguísticaThreadObjeto refere-se ao objeto do fio, que é criado porthreading.Thread().

Identificação do fio. Identificação Número Se o fio é forçado a terminar. encerrado Bool O tempo de execução do fio em nanossegundos. decorrido Número O valor de retorno da função thread. ret Número

O código a seguir testa o mecanismo de timeout dojoin()Função doThreadObjeto e imprime o valor de retorno dojoin() function.

function testFunc() {
    for (var i = 0; i < 5; i++) {
        Log(i)
        Sleep(300)
    }
}

function main() {
    var t1 = threading.Thread(testFunc)
    Log(t1.join(1000))  // undefined
    Log(t1.join())      // {"id":1,"terminated":false,"elapsed":1506864000}
} ```


{@fun/Threads/Thread/join join}
Financiamento Variaveis integradas