访问promise中的局部变量然后范围

时间:2017-07-11 15:26:20

标签: javascript ajax scope promise bind

我想使用xthen的上下文中访问本地变量bind,但我得到的是x未定义。 我正在使用Promise来检索数据。

使用此函数进行ajax调用:

function ajaxCall(){
  p = new Promise(function(resolve, reject){
    $.ajax({
      url: 'http://localhost:9090/bru/struc/arrivals',
      headers: { 'Authorization' : "Basic " + btoa("BRU:BRU")},
      type: "GET",
      success: function(data, status, xhr) {
        resolve(data)
      },
      error: function(xhr, textStatus, errorThrown) {
          xhr = reject
      }
    })
  })
}

在这里,我想展开promise并将其值分配给局部变量x

function getColumns(){
  var x
  r = ajaxCall().then(function(result){
    this.x.val = result \\result is available here, I can see it
    console.log(result)
  }.bind(this))
  console.log('Columns retrieved.')
  return x
}

1 个答案:

答案 0 :(得分:0)

尝试使用。done代替。then

function getColumns(){
  var x
  r = ajaxCall().done(function(result){
    this.x.val = result \\result is available here, I can see it
    console.log(result)
  }.bind(this))
  console.log('Columns retrieved.')
  return x
}