2017-07-11 2 views
0

thenという文脈でローカル変数xにアクセスしたい場合は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

ローカル変数にその値を割り当てたいとしてみてください。の代わりにdonethen

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 
} 
関連する問題