Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Redux Saga“;调用;函数名为保留字时的函数,如何进行链式函数调用?_Javascript_Firebase_Redux Saga_Method Call - Fatal编程技术网

Javascript 如何使用Redux Saga“;调用;函数名为保留字时的函数,如何进行链式函数调用?

Javascript 如何使用Redux Saga“;调用;函数名为保留字时的函数,如何进行链式函数调用?,javascript,firebase,redux-saga,method-call,Javascript,Firebase,Redux Saga,Method Call,我需要在使用Firebase函数的redux sagas中的两个函数中使用call()。在action.user.delete()中,我无法执行此操作 yield{delete}=action.user或调用([action.user,delete]),因为delete是保留字。在database.ref(url).remove()中,我不知道如何对链式函数使用call() 有几个语法选项可用于处理delete作为保留字的情况: 将函数名的字符串传递给调用方法 在具有不同名称的变量中获取对de

我需要在使用Firebase函数的redux sagas中的两个函数中使用
call()
。在
action.user.delete()
中,我无法执行此操作
yield{delete}=action.user
调用([action.user,delete])
,因为
delete
是保留字。在
database.ref(url).remove()
中,我不知道如何对链式函数使用
call()

有几个语法选项可用于处理
delete
作为保留字的情况:

  • 将函数名的字符串传递给
    调用
    方法
  • 在具有不同名称的变量中获取对
    delete
    函数的引用
两个选项如下所示

对于链式函数,只需将链拆分为单独的调用,并使用一个调用的结果执行下一个调用。在两个
delete
示例之后,我提供了一个执行链式调用的示例

 yield action.user.delete() && database.ref(url).remove()

对不起,这对我不起作用。。我是用
const{ref}=database const{remove}=database.ref()const result=yield call([database,ref],url)yield call([result,remove])
const deleteFunction=()=>action.user.delete()yield call([action.user,deleteFunction])
完成的,但我感谢你的帮助,大拥抱。
import { call } from "redux-saga/effects";

const refResponse = {
  remove: () => {
    console.log("You removed me!");
  }
};
const action = {
  user: {
    delete: () => {
      console.log("You deleted me!");
    }
  }
};
const database = {
  ref: () => {
    console.log("Returning ref");
    return refResponse;
  }
};
export const starter = function*() {
  console.log("before call");
  yield call([action.user, "delete"]);
  console.log("after call using string for function name");
  const deleteFunc = action.user.delete;
  yield call([action.user, deleteFunc]);
  console.log("after call using function variable");

  console.log("before start of chained call");
  const result = yield call([database, "ref"]);
  console.log("before 2nd part of chained call");
  yield call([result, "remove"]);
};