【发布时间】:2023-04-10 22:17:02
【问题描述】:
我有一个需要一些外部数据的承诺回调。我怎样才能做到这一点?此代码中的 myDataINeed 始终为空。
var myDataVariable = "some dynamic data set above";
var promActions = [];
for(var k in loop){
promActions.push(externalCall(loop[k]));
}
var promResults = Promise.all(promActions);
let myDataINeed = myDataVariable;
promResults.then(function(responseArray, myDataINeed){
....do stuff with responseArray and myDataINeed
});
编辑: 我向 myDataVariable 添加了一个值,因此您可以看到它已设置为某个值。 myDataINeed 不在 .then 函数的范围内。在promise期间我如何得到它。那么呢?
【问题讨论】:
-
.then回调只接收一个参数,您不能只添加一个参数并期望承诺“知道您需要什么” - 此外,您显示的代码myDataINeed是可以在.then内部访问,因为它仍在范围内(只要您不使用代码中的参数“屏蔽”它)即从 .then 回调中删除参数,然后 presto chango,myDataINeed将是您需要的数据:ps在这段代码中,myDataINeed将是undefined而不是null(无论如何都在 .then 回调中) -
@guest271314 - 我不知道你的评论对我意味着什么,但所有
.then()处理程序都得到一个参数。如果将那个参数设为对象,则可以在其上放置任意数量的属性,但只能得到一个参数。这就是 promise 规范的定义方式。.then()处理函数不能有两个或更多参数。 -
@guest271314 - 谁知道?这是一个不好的,不清楚的问题。正如声明的那样,变量在范围内并且可用。
-
@guest271314
appears myDataINeed is an asynchronous function call根本不像函数调用
标签: javascript node.js angular typescript promise