道歉,如果这是重复,但我能找到的只是帮助让功能完成或不相关的语言,而不是后续做什么。总之...
所以,我有两个其他不相关的功能。一个调用Namey API,它在回调中返回一个随机名称,我用它来更新一个元素。这是我的randomizePANameListeners函数。
我的第二个函数从这两个元素中获取名字和姓氏,并使用它们创建随机用户名。这是我的randomizeAppNameListeners。
randomizePANameButton.addEventListener("click", function(e) {
// Check the gender of the PA
var isChecked = document.getElementById("gender56").checked;
// Use a self-invoking function to make sure the names are
// updated correctly
(function() {
if (isChecked === true) {
namey.get({ type: 'male', with_surname: 'false', frequency: 'all', callback: function(n) { document.getElementById("fName").value = n }});
} else {
namey.get({ type: 'female', with_surname: 'false', frequency: 'all', callback: function(n) { document.getElementById("fName").value = n }});
}
// Set the surname as well
namey.get({ type: 'surname', with_surname: 'false', frequency: 'all', callback: function(n) { document.getElementById("lName").value = n }});
})()
并附加到第二个按钮的事件监听器:
var fName = document.getElementById("fName").value.substring(0, 3);
var lName = document.getElementById("lName").value;
var randomDigits = (Math.random() * (100 - 10) + 10).toFixed(0);
return fName + lName + ".UAT" + randomDigits;
现在,我有一个按钮,通过将所有这些事件监听器绑在一起,使一切变得更容易。我的简单按钮为我做了一切,但当它调用这两个时,它会使元素中的当前值生成随机名称,然后创建一个新的应用程序名称,它不会采用新的PA名称。
因此,使用vanilla JavaScript,如何在完成第二个函数之前等待第一个函数完成?我宁愿不创建一个不需要的全局变量。
答案 0 :(得分:1)
在原生javascript中,您可以在自己的函数中使用回调
var myFunction = function(complete) {
/* Do things here first */
complete();
}
myFunction(function(){
/* Do Something else here after the first has completed */
});
答案 1 :(得分:0)
您可以尝试使用承诺 - http://www.html5rocks.com/en/tutorials/es6/promises/
这应该有效:)
答案 2 :(得分:-1)
是使用适用于您的场景的promises,如果您使用的是jquery,则可以使用deferred。