是否可能是这样的?
Integer
因此,点击add(random.nextInt(100))
时,我需要等待,同时点击/etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://<master ip>:2379"
FLANNEL_ETCD_PREFIX="/kube-centos/network"
或$('#btna').click(function(){
console.log(abc());
})
function abc() {
$('#btnb').click(function(){
var result = false;
});
$('#btnc').click(function(){
var result = true;
});
return result;
}
并将结果写入控制台。
有帮助吗?
答案 0 :(得分:2)
使用Promises的其他方法,它将以特定的顺序运行,以等待上一次单击,但第一个按钮除外( $btna
)
const $btna = document.getElementById('btna');
const $btnb = document.getElementById('btnb');
const $btnc = document.getElementById('btnc');
function executeListener(btn ){
return new Promise(function(resolve, reject) {
btn.addEventListener("click" , function(){
let jsonReturn = {
action : "click" ,
button : btn
}
resolve(jsonReturn)
});
})
}
executeListener($btna)
.then(function(btnaSuccess) {
console.log("click btna");
return executeListener($btnb)
}).then(function(btnbSuccess){
console.log("click btnb");
return executeListener($btnc);
}).then(function(btncSuccess){
console.log("click btnc")
console.log("Chispas");
})
<button id="btna">btna</button>
<button id="btnb">btnb</button>
<button id="btnc">btnc</button>
此外,您可以使用Promise.all
const $btna = document.getElementById('btna');
const $btnb = document.getElementById('btnb');
const $btnc = document.getElementById('btnc');
function executeListener(btn ){
return new Promise(function(resolve, reject) {
btn.addEventListener("click" , function(){
let jsonReturn = {
action : "click" ,
button : btn
}
resolve(jsonReturn)
});
})
}
Promise.all([
executeListener($btna),
executeListener($btnb),
executeListener($btnc)])
.then(values => {
console.log("resolve all clicks");
console.log("Chispas")
});
<button id="btna">btna</button>
<button id="btnb">btnb</button>
<button id="btnc">btnc</button>
答案 1 :(得分:1)
假设您要等待所有所有按钮被单击(对于您接受的答案,情况似乎是如此),并假设您正在使用ECMA 2017,则可以使用更现代的async
/ await
模式。
const btna = $("#btna");
const btnb = $("#btnb");
const btnc = $("#btnc");
async function handler(btn) {
return new Promise((resolve) => {
btn.on("click", () => {
resolve(`clicked ${btn.attr("id")}`);
});
});
}
(async () => {
let values = await Promise.all([handler(btna), handler(btnb), handler(btnc)]);
console.log(values);
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btna">btna</button>
<button id="btnb">btnb</button>
<button id="btnc">btnc</button>
不过根据您的问题,听起来您不想等到单击所有按钮。您只想在btnb
之后单击btna
与btnc
之后单击btna
时记录不同的值。在这种情况下,您根本不需要承诺,而可以做到这一点:
const btna = $("#btna");
const btnb = $("#btnb");
const btnc = $("#btnc");
btna.click(() => {
btnb.on("click", clickHandler);
btnc.on("click", clickHandler);
});
function clickHandler() {
console.log(this.id);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btna">btna</button>
<button id="btnb">btnb</button>
<button id="btnc">btnc</button>