使用简单示例了解Javascript回调
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用简单示例了解Javascript回调,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1596字,纯文字阅读大概需要3分钟。
内容图文
![使用简单示例了解Javascript回调](/upload/InfoBanner/zyjiaocheng/679/c709f8e62dc84a0f944e3dc928a6a5b7.jpg)
我正在使用Facebook SDK.我的目标是在玩示例时学习更多的Javascript.
我的学习方式是通过完成自我任务,当我完成任务时,我就学会了:)
包含Facebook SDK的代码已启动并正在运行,此处未包含.我的问题不是针对Facebook API,它只是一个例子.我正在尝试通过回调这个常见问题来扩展我的Javascript知识
我无法完成一项任务,并且我认为它与回调有关…
任务:
单击带有以下代码的按钮:
<button id="askme" onclick='askFaceBook();'>Direct</button>
该代码将运行以下功能:
function askFaceBook() {
var result = myApi.getLoggedName("Samsung");
};
依次将运行myApi对象:
var myApi = {
getLoggedName: function (statement) {
return FB.api('/me', function(response) {
console.log(response);
return response + "" + statement;
});
}
}
问题:
可变结果始终是不确定的.它在返回myAPI.getLoggedName之前执行. myAPI正常工作如何使变量结果等待结果.我知道我可以使用Promise / Deffered,但是我想了解和学习如何使用回调来实现Javascript样式.
我希望有人可以帮助我:)
解决方法:
所以首先,myApi.getLoggedName中的return语句出了什么问题?
函数FB.api使用了两个参数,第二个是您的回调引用,并且在回调中没有使用return语句,因为没有人期望回调会返回值.因此,当您调用FB.api时,它将仅注册该回调(将在响应中执行该回调)并且不返回任何内容,因此您的函数myApi.getLoggedName返回的值未定义.
现在如何解决这个问题
在这种情况下,我们可以使用Promises
var myApi = {
getLoggedName: function (statement) {
var promise = new Promise(function(resolve, reject) {
FB.api('/me', function(response) {
console.log(response);
resolve(response + "" + statement);
});
}).then(function(result) {
return result;
});
}
}
现在在这种情况下,当resolve是promise被调用时,then锁将被执行,然后它将结果作为参数传递给then回调.我这种情况下的结果将是不确定的.
内容总结
以上是互联网集市为您收集整理的使用简单示例了解Javascript回调全部内容,希望文章能够帮你解决使用简单示例了解Javascript回调所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。