在Promise.all()中,“this”未定义。然后()

时间:2018-04-13 03:32:31

标签: javascript reactjs promise this

我正在尝试在解析Promise之后在.then()内执行this.setstate。 但似乎这在当时是未定义的。

在做了一些阅读之后,我发现(this)需要绑定在then()中。 但是,我不清楚如何绑定它。

下面是我的原始代码。

function deleteOld() {
  var app = SpreadsheetApp;
  var orderSheet = app.getActiveSpreadsheet().getSheetByName("POTemplate");
  var historySheet = app.getActiveSpreadsheet().getSheetByName("POHistory");
  var poNO = orderSheet.getRange("E9").getValue();
  var lastRow = historySheet.getLastRow();
  var myRange = historySheet.getRange("A2:A" + lastRow); 
  var data = myRange.getValues();
  var row = 1;
  for(i = 0; i < data.length; i++) {
    if(data[i][0] != poNO){
      row++; // Go to the next row
      continue;
    } else {
      historySheet.deleteRow(row);
      row--; // Deleted a row
    }
  }
}

以下是正确的做法吗?

var productSource = await this.state.productAll.filter(
  product => product.exchangeId === exchange.exchangeId
);
var productOptions = await this.state.productAll.filter(
  product => product.exchangeId !== exchange.exchangeId
);

Promise.all([productSource, productOptions])
  .then((promises) => {
  this.setState({
    currentExchange: exchange,
    currentCurrency: exchange.baseCurrency,
    originExchange: exchange,
    productSource: promises[0],
    productOptions: promises[1]
  });
  this.refresh();
});

谢谢!

1 个答案:

答案 0 :(得分:0)

为了确保this的{​​{1}}具有正确的上下文,我认为这是一个很好的约定,在构造函数中绑定this.setState确保它对应于拥有的这个组件类this方法。

setState