在 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.httpTelevisionContentRequestwindow.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)