如何让一个javascript函数在另一个函数完成后运行
How to make a javascript function to run after another one get finished?
我正在使用Apache Cordova开发移动应用程序。问题是,我想获取手机号码,然后通过jQuery获取功能进行授权。所有功能都还可以,但获取手机号码的功能比其他功能慢,最后完成。
我的代码摘要如下:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
devicePhoneNumber();
alert("ALERT1"); // ALERT1
};
function devicePhoneNumber() {
var telephoneNumber = cordova.require("telephonenumber");
telephoneNumber.get(function (result) {
alert(result); //ALERT2
}, function () {
alert("error");
});
};
我不知道为什么先得到ALERT1,然后得到ALERT2。我想在得到ALERT2后运行我的其他代码。
任何建议都将不胜感激。
如果telephone.get
是异步的,您需要等待它完成,然后才能进行第一次警报
document.addEventListener("deviceready", onDeviceReady, false);
编写devicePhoneNumber
函数以接受回调done
。回调接收两个参数,err
(如果存在)和result
。无论telephoneNumber.get
如何,回调仍将被称为
function devicePhoneNumber(done) {
var telephoneNumber = cordova.require("telephonenumber");
telephoneNumber.get(function (result) {
done(null, result);
}, function () {
done(Error("There was an error getting the phone number."));
});
}
要立即使用该函数,请向函数传递一个接受两个参数err
和result
的回调。在回调中,检查错误。如果存在,请相应地进行处理。您可以使用err.message
访问错误消息。
function onDeviceReady() {
devicePhoneNumber(function(err, result) {
if (err) return alert(err.message);
alert("Alert 1"); // alert 1
alert(result); // alert 2
});
}
在devicePhoneNumber()
函数中添加一个callback
函数:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
devicePhoneNumber(function(){ //anonymous function for the callback parameter
/* everything you put in here will be executed only AFTER
telephoneNumber.get() has run successfully */
alert("ALERT1"); // ALERT1
});
};
function devicePhoneNumber(callback) {
var telephoneNumber = cordova.require("telephonenumber");
telephoneNumber.get(function (result) {
alert(result); //ALERT2
callback(); //callback function is called here
}, function () {
alert("error");
});
};
相关文章:
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- 多次调用另一个javascript函数中的javascript函数
- 使用JS函数来使用另一个函数的语法?node.js
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 另一个Ajax函数触发的Ajax函数不起作用
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在不预定义的情况下将javascript函数传递到另一个函数中
- 从另一个函数获得$this值
- 如何记录调用另一个函数的函数的返回值
- 它在另一个函数中嵌套后不会输出文本
- 如何将自动完成的值传递到另一个函数中
- 将一个函数作为参数传递给javascript中的另一个函数
- 同一事物的两个函数,一个崩溃,另一个不崩溃,为什么
- 从另一个函数延迟解析的返回
- 多次调用promise函数,直到另一个promise函数满足条件