我需要从在外部函数中声明的then块内部访问变量,但是由于某些原因,其中一些显示为未定义。在then的范围内是否可以访问特定的名称?
function foo(tableIDs, tableID, fieldID)
{
var tables = new Array();
var bar = new Array();
var zim = new Array();
var gir = new Object();
zim.push(fieldID);
gir.id = fieldID;
otherFunction(tableID).then(function(response)
{
tables.push(response); // works fine
bar.push(response); // bar is undefined
zim.push(response); // zim is undefined
gir.response = response; //gir is undefined
});
}
另外,虽然在then语句中可以访问tableID,但是tableID和fieldID都不可用。目前,我正在通过将fieldID推入表并以这种方式访问它来“解决”此问题,然后再处理响应,但这似乎是一个非常丑陋的解决方案,我想避免。表格和bar之间的唯一区别是变量的名称,上面示例中使用的所有名称正是我在处理此变量时使用的名称。
答案 0 :(得分:0)
您的代码运行完美。我已经为测试目的完成了您的实施,并且工作正常。 检查一下:
function otherFunction(tableID){
return new Promise(function(resolve,reject){
resolve(tableID)
})
}
function foo(tableIDs, tableID, fieldID){
var tables = new Array();
var bar = new Array();
var zim = new Array();
var gir = new Object();
zim.push(fieldID);
gir.id = fieldID;
otherFunction(tableID).then(function(response){
tables.push(response);
bar.push(response);
zim.push(response);
gir.response = response;
console.log('response:',response)
console.log('tables:',tables)
console.log('bar:',bar)
console.log('zim:',zim)
console.log('gir:',gir)
console.log('tableIDs:',tableIDs)
console.log('tableID:',tableID)
console.log('fieldID:',fieldID)
});
}
foo('test-tableIDs' , 'test-tableID', 'test-fieldID')
在将参数传递给foo()或Promise函数中时,您必须出错...