gpt4 book ai didi

javascript - 如何访问 promise 中的函数参数

转载 作者:行者123 更新时间:2023-11-30 16:19:05 25 4
gpt4 key购买 nike

我有以下功能:

var makeNewContextMenu = function( metadata, $toggle, $after){
dataStore.getCollaboration(metadata._mountTarget).then(function(data){
//need to access metadata, $toggle and $after inside promise
})
}

我如何才能在我的 promise 中访问元数据、$toggle 和 $after?

最佳答案

您可以完全按照代码显示的方式使用它们。来自父作用域的变量或参数可用于内联函数,例如您的 .then() 处理程序。

var makeNewContextMenu = function( metadata, $toggle, $after){
dataStore.getCollaboration(metadata._mountTarget).then(function(data){
// this works!
console.log(metadata);
console.log($toggle);
console.log($after);
})
}

您可能无法访问父作用域中定义的变量或参数的唯一原因是,如果某个中间作用域定义了同名的变量或参数。在这种情况下,离您较近的范围具有优先权,并且较高范围的变量被具有相同名称的较近范围变量“隐藏”,并且如果不将变量重命名为不具有相同名称,则无法访问较高范围的变量。但是,这不是您的情况。


在您的评论中,您询问了如何获取包含 metadata$toggle$afterdata 的返回值。因为 dataStore.getCollaboration() 是异步的,这意味着它的响应在未来的某个时间可用,但是 makeNewContextMenu() 立即返回,你不能直接返回 data 来自 makeNewContextMenu()。但是,您可以返回一个 promise ,并使所需的数据成为 promise 的实现值,如下所示:

var makeNewContextMenu = function( metadata, $toggle, $after){
return dataStore.getCollaboration(metadata._mountTarget).then(function(data){
return {
metadata: metadata,
$toggle: $toggle,
$after: $after,
data: data
};
})
}

makeNewContextMenu(...).then(function(info) {
console.log(info.metadata);
console.log(info.$toggle);
console.log(info.$after);
console.log(info.data);
});

请注意,您真的不必将 metadata$toggle$after 放入此返回的数据结构中,因为它们已通过in 作为 makeNewContextMenu() 的参数,因此它们在调用 makeNewContextMenu() 的范围内已经可用。您可以在那里直接引用它们并使用它们的原始变量。

关于javascript - 如何访问 promise 中的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com