Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Promise и область видимости переменных (https://javascript.ru/forum/node-js-io-js/65755-promise-i-oblast-vidimosti-peremennykh.html)

-VenoM- 11.11.2016 14:58

С колбеками более-менее понял, async/await интересная штука, но пока нет потребности в ней, т.к. сильно бы тормозил программу такой подход.

Столкнулся с тем что:

function addOne(callback) {
    connection.query(strQuery, function (err, rows) {
        myNumber=rows[0].Name;
        callback.call(myNumber);
    });
}

function addTwo(callback) {
    connection.query(strQuery, function (err, rows) {
        myNumber=rows[0].Customer_ID;
        callback.call(myNumber.toString());
    });

// нужно выполнить addOne с результатом temp1, передать его в addTwo и выполнить addTwo
addOne(function () {

    if (this=='Vlad')
    {
        temp1=this;
        console.log(this);
    }
    addTwo(function (){
        if (this=='2233')
        {
            temp2=this;
            console.log(this);
        }
        return temp2;
    });
    return temp1;
});

}


Я так понимаю, что addTwo должна иметь ещё один аргумент. Однако, если его просто добавить, то callback.call уже не будет работать.

Aetae 11.11.2016 15:38

addOne(function () {

  if (this=='Vlad')
  {
    var temp1 = this;
    console.log(this);
  }
  addTwo(function (){
    //temp1 виден отсюда без дополнительных телодвижений, т.к. функция создаётся прямо тут и замыкает на себя вышестоящий контекст
    
    if (this=='2233')
    {
      var temp2 = this;
      console.log(this, temp1);
    }
    return temp2;
  });
  return temp2;
});


Часовой пояс GMT +3, время: 17:48.