2017-07-11 58 views
0

我想訪問一個局部變量x在上下文then使用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 
     } 
    }) 
    }) 
} 

在這裏,我想解開的承諾,並指定其值局部變量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 
} 

回答

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 
}