Callback 如何识别回调函数
您好,我已经咨询过了:但是回拨仍然有问题。我还检查了JS是性感的,callbackhell.com,CW Beuchler的博客,Github上的Maxogen repo,以及其他关于这个主题的文章 Beuchler先生很友好地回答了我的问题,但如果没有他指出,我无法确定下面链接的要点中的“thingToRun”是哪个功能。我想在这里包括代码,但我遇到了麻烦,所以我不得不使用要点 在大多数函数中,这是作为“回调”编写的,所以他写这篇文章是为了说明它不必是回调,但我仍然无法确定哪个函数被传递到getData中。当我删除贝什勒先生的评论,并试图自己找到它时,我遇到了麻烦。对我来说,它看起来像logData(我只是基于每个函数接收的参数),但这是一个常规函数。或者我误解了函数 我需要这些信息来编写一个简单的应用程序,获取用户的纬度/经度,检查谷歌的API,根据纬度/经度获取用户的城市名称,然后检查黑暗天空API,根据纬度/经度获取当地天气。所以在这之后,我必须弄清楚如何让多个回调一起玩Callback 如何识别回调函数,callback,Callback,您好,我已经咨询过了:但是回拨仍然有问题。我还检查了JS是性感的,callbackhell.com,CW Beuchler的博客,Github上的Maxogen repo,以及其他关于这个主题的文章 Beuchler先生很友好地回答了我的问题,但如果没有他指出,我无法确定下面链接的要点中的“thingToRun”是哪个功能。我想在这里包括代码,但我遇到了麻烦,所以我不得不使用要点 在大多数函数中,这是作为“回调”编写的,所以他写这篇文章是为了说明它不必是回调,但我仍然无法确定哪个函数被传递到ge
链接到Beuchler先生(很有帮助,但我仍然不明白)对我的回答的要点:如果我正确理解了这个问题,您打算获取作为回调传递的
函数的名称。如果您的函数
如下所示:
function myFunc(/*some parameters*/) {
//Do something
}
function getFunctionName(func) {
if (typeof func === "function") { //Make sure the input is a function
if (func.name) { //This is a named function
return func.name;
}
var text = func + "";
text = text.substring(0, text.indexOf("(")).trim();
var spaceIndex = text.indexOf(" ");
if (spaceIndex > 0) { //We need something like function myFunc
return text.substring(text.indexOf(" ")).trim();
}
return ""; //Does not have a name
}
return false; //Not a function
}
function getData(dataURI, thingToRun) {
var myData = getSomeData();
console.log(getFunctionName(thingToRun));
thingToRun(myData);
}
然后,您可以在大多数web浏览器中使用myFunc.name
获取其名称。要使其防弹,您需要一个类似以下内容的功能
:
function myFunc(/*some parameters*/) {
//Do something
}
function getFunctionName(func) {
if (typeof func === "function") { //Make sure the input is a function
if (func.name) { //This is a named function
return func.name;
}
var text = func + "";
text = text.substring(0, text.indexOf("(")).trim();
var spaceIndex = text.indexOf(" ");
if (spaceIndex > 0) { //We need something like function myFunc
return text.substring(text.indexOf(" ")).trim();
}
return ""; //Does not have a name
}
return false; //Not a function
}
function getData(dataURI, thingToRun) {
var myData = getSomeData();
console.log(getFunctionName(thingToRun));
thingToRun(myData);
}
现在
将屈服
myFunc
将屈服
假的
将产生空字符串,因为函数
没有名称
如果我们定义这样的东西
function something() {
this.somethingElse = function() {};
}
然后
将生成空字符串。显然,我们希望它能产生一些东西,但我们需要对此进行额外的调整。建议:
function nameFunction(func, name) {
func.funcionName = name;
return func;
}
然后
function something() {
this.somethingElse = nameFunction(function() {}, "somethingElse");
}
然后更改我们一直用于
function getFunctionName(func) {
if (typeof func === "function") { //Make sure the input is a function
if (func.name) { //This is a named function
return func.name;
} else if (typeof func.functionName === "string") { //We called nameFunction on this
return func.functionName;
}
var text = func + "";
text = text.substring(0, text.indexOf("(")).trim();
var spaceIndex = text.indexOf(" ");
if (spaceIndex > 0) { //We need something like function myFunc
return text.substring(text.indexOf(" ")).trim();
}
return ""; //Does not have a name
}
return false; //Not a function
}
现在您可以从getData
调用getFunctionName
,如下所示:
function myFunc(/*some parameters*/) {
//Do something
}
function getFunctionName(func) {
if (typeof func === "function") { //Make sure the input is a function
if (func.name) { //This is a named function
return func.name;
}
var text = func + "";
text = text.substring(0, text.indexOf("(")).trim();
var spaceIndex = text.indexOf(" ");
if (spaceIndex > 0) { //We need something like function myFunc
return text.substring(text.indexOf(" ")).trim();
}
return ""; //Does not have a name
}
return false; //Not a function
}
function getData(dataURI, thingToRun) {
var myData = getSomeData();
console.log(getFunctionName(thingToRun));
thingToRun(myData);
}
非常非常好的问题!