提问人:TheKingVaro 提问时间:7/8/2023 更新时间:7/8/2023 访问量:41
JavaScript 和 Angular 回调
JavaScript and Angular callbacks
问:
下午好。
我目前正在开发一个 Angular15 应用程序,我正在使用一个 .js 文件,其中包含我需要在项目中使用的某些函数。 我能够使用这些功能,但是我已经到了不知道如何继续的地步,因为我发现了一个问题,我不知道它是否有解决方案,如果有,我不知道:
我必须使用这个 .js 文件的功能。此函数调用某个终结点,当调用完成时,它可以返回 OK 或错误。 该函数需要 2 个参数:一个用于 OK 的回调函数和另一个用于错误的回调函数。这些回调函数必须由我实现,并且根据执行的回调,函数会向该回调发送某些数据。
例如,如果执行 OK 的回调,则回调将收到一个包含 base64 内容的字符串。如果执行了错误的回调,则回调将收到一个包含错误类型的字符串和另一个包含错误消息的字符串。
我在.ts文件中有以下代码:
makeCall() {
this.JSLibrary.call(() => {this.callbackOK()}, () => {this.callbackError()});
}
callBackOK() {
console.log('OK');
}
callbackError() {
console.log('ERROR');
}
如您所见,我已经将两个回调函数定义为简单地执行控制台.log,并且 makeCall 方法将使用 JS 文件的函数调用。
问题是:我不知道如何将 JSLibrary.call 方法将发送到每个回调的信息传递到每个回调,因为如果我在回调函数中定义参数,那么打字稿编译器会说我没有在 JSLibrary.call 函数中传递这些参数:
callBackOK(base64: string) {
console.log(base64);
}
callbackError(errorType: string, errorMessage: string) {
console.log('ERROR': + errorType + errorMessage);
}
makeCall() {
this.JSLibrary.call(() => {this.callbackOK()}, () => {this.callbackError()});
}
ERROR BECAUSE I'M NOT PASSING THE PARAMETERS UP HERE
那么,问题是:有没有办法将信息传递给每个回调?
谢谢!
答:
变量是 JavaScript 和 TypeScript 中函数的一种内置功能,其行为类似于数组并保存传递给函数的所有值。arguments
您不必提前命名或定义参数。您可以简单地通过对象追溯访问它们。当您需要知道将传入多少参数时,这特别有用,例如在回调的情况下。arguments
但是,由于 ES6 (ECMAScript 6) 的改进,在许多情况下最好使用 rest 参数。它们的工作方式类似,但行为类似于真正的数组,并且具有更多功能。例如,可以对它们使用 forEach 和其他 Array 方法。...args
以下是定义函数的另一种方法:makeCall
makeCall() {
this.JSLibrary.call((...args) => {this.callbackOK(...args)}, (...args) => {this.callbackError(...args)});
}
callbackOK(base64: string) {
console.log(base64);
}
评论
上一个:如何返回异步调用的响应?
评论