在 Typescript React 中使用相同参数进行条件异步调用
Making conditional async call with same parameters in Typescript React
我想在React中根据不同的条件使用相同的参数进行不同的异步调用。例如,
const getNewContent = (payload: any) => {
(currentOption === myMediaEnum.TELEVISION
? (window as any)["httpTelevisionContentRequest"](payload)
: (window as any)["httpRadioContentRequest"](payload)
)
.then((response: any) => {
if (response.status === 200) {
console.log(`current Data - ${response.data}`
} else {
//testing
}
}.catch((err: any) => console.log(err.toString());
但是,我收到如下错误,
Uncaught TypeError: window.httpTelevisionContentRequest is not a function
错误是正确的,因为全局 window 变量上不存在这样的方法。但是我可以执行此异步调用的其他方法是什么?我这样做是因为我想调用不同的函数并避免重复。一旦返回承诺,我的代码就会更大一些。我没有将所有内容都粘贴到此处以使我的问题易于阅读。
任何关于我的问题的建议或阅读 material 都会很棒。
下次请确保提供的代码格式正确,缺少很多符号。
无论如何,您的方法应该有效。只需确保 window.httpTelevisionContentRequest
和 window.httpRadioContentRequest
是函数即可。
下面是按照您的描述进行操作的示例。
const success = (data: string) =>
new Promise((resolve) => resolve({ status: 200, data }))
const fail = (data: string) =>
new Promise((resolve) => resolve({ status: 400, data }))
const getNewContent = (payload: any, succeed: boolean) => {
(succeed ? success(payload) : fail(payload))
.then((response: any) => {
if (response.status === 200) {
console.log(`current Data - ${response.data}`)
} else {
console.log("failed")
}
})
.catch((err: any) => console.log(err.toString()))
}
getNewContent("successful call", true)
getNewContent("failing call", false)
我想在React中根据不同的条件使用相同的参数进行不同的异步调用。例如,
const getNewContent = (payload: any) => {
(currentOption === myMediaEnum.TELEVISION
? (window as any)["httpTelevisionContentRequest"](payload)
: (window as any)["httpRadioContentRequest"](payload)
)
.then((response: any) => {
if (response.status === 200) {
console.log(`current Data - ${response.data}`
} else {
//testing
}
}.catch((err: any) => console.log(err.toString());
但是,我收到如下错误,
Uncaught TypeError: window.httpTelevisionContentRequest is not a function
错误是正确的,因为全局 window 变量上不存在这样的方法。但是我可以执行此异步调用的其他方法是什么?我这样做是因为我想调用不同的函数并避免重复。一旦返回承诺,我的代码就会更大一些。我没有将所有内容都粘贴到此处以使我的问题易于阅读。
任何关于我的问题的建议或阅读 material 都会很棒。
下次请确保提供的代码格式正确,缺少很多符号。
无论如何,您的方法应该有效。只需确保 window.httpTelevisionContentRequest
和 window.httpRadioContentRequest
是函数即可。
下面是按照您的描述进行操作的示例。
const success = (data: string) =>
new Promise((resolve) => resolve({ status: 200, data }))
const fail = (data: string) =>
new Promise((resolve) => resolve({ status: 400, data }))
const getNewContent = (payload: any, succeed: boolean) => {
(succeed ? success(payload) : fail(payload))
.then((response: any) => {
if (response.status === 200) {
console.log(`current Data - ${response.data}`)
} else {
console.log("failed")
}
})
.catch((err: any) => console.log(err.toString()))
}
getNewContent("successful call", true)
getNewContent("failing call", false)