【发布时间】:2019-12-26 00:31:11
【问题描述】:
我试图寻找答案,但我得到的大多数点击都是针对无参数或固定参数的。
我想做的是在一个带有未知数量的参数和参数类型的javascript函数中实现一个可选的回调。
我正在实施一个 javascript 层以使用 AWS 临时凭证来操作 S3 上的文件。一些函数调用上传文件(接收数组),一些删除文件(也是数组),一些重命名存储桶对象(有两个参数,旧键和新键)等。
问题是,当使用临时凭据时,凭据可能会超时。因此,在完成任何呼叫之前,我必须检查凭据是否需要更新。如果他们这样做,我必须先进行异步调用以获取凭据。只有在检索到凭据后,它才应该开始执行它被要求执行的任何操作。
这就是那些“承诺”的全部内容吗?我还没有使用过这些东西,现在正在阅读它们,但不知道如何实现一个(还)。
基本上,在我的代码中,我需要一个用于任何给定 aws 函数的包装器:
function onDelete(key) {
if(AWS.config.credentials.needsRefresh()) {
refreshToken(); // makes an asynchronous call with jquery
// need to do actual delete when ajax finished: delete(key)
} else {
// do actual delete immediately: delete(key)
}
}
function onRename(oldkey,newkey) {
if(AWS.config.credentials.needsRefresh()) {
refreshToken(); // makes an asynchronous call with jquery
// need to do actual rename when ajax finished: rename(oldkey, newkey)
} else {
// do actual rename immediately: rename(oldkey, newkey)
}
}
或者类似的东西。任何帮助表示赞赏。
【问题讨论】:
-
你试过传播运算符吗?
-
在 javascript 中参数始终是可选的,您可以传递多于或少于指定的值。您可以使用
arguments变量访问所有参数 -
@wendelin 虽然会降低性能并使您的代码通常难以阅读,所以我建议尽可能避免这种情况。
-
@JonasWilms 我不确定它是如何影响性能的,但我同意你应该避免它。我只是想让他意识到参数总是可选的这一事实
-
所以
AWS.config.credentials.needsRefresh()同步响应?
标签: javascript asynchronous promise callback