JS 中关于两个promise函数执行顺序的问题
`var bConnect = 0;`//全局变量
myonLoad() {return new Promise((resolve, reject) => {
try {
var s_pnp = new SoftKey3W();
s_pnp.Socket_UK.onopen = function () {
bConnect = 1; //代表已经连接,用于判断是否安装了客户端服务
console.log("我先执行1", bConnect);
};
//在使用事件插拨时,注意,一定不要关掉Sockey,否则无法监测事件插拨
s_pnp.Socket_UK.onmessage = function got_packet(Msg) {
var PnpData = JSON.parse(Msg.data);
if (PnpData.type == "PnpEvent") {
//如果是插拨事件处理消息
if (PnpData.IsIn) {
alert(
"UKEY已被插入,被插入的锁的路径是:" + PnpData.DevicePath
);
} else {
alert(
"UKEY已被拨出,被拨出的锁的路径是:" + PnpData.DevicePath
);
}
}
};
s_pnp.Socket_UK.onclose = function () {};
resolve(true);
} catch (e) {
alert(e.name + ": " + e.message);
return false;
}
});
},
mylogin_onclick() {//这里使用了异步的方式,因为WEBSOCKET是异步的
return new Promise((resolve, reject) => {
console.log("我先执行2", bConnect);
//判断是否安装了服务程序,如果没有安装提示用户安装
if (bConnect == 0) {
window.alert("未能连接服务程序,请确定服务程序是否安装。");
resolve(false);
}
try {
//一系列操作
s_simnew1.Socket_UK.onclose = function () {};
resolve(true);
} catch (e) {
alert(e.name + ": " + e.message + "。可能是没有安装相应的控件或插件");
resolve(false);
}
});
},
bConnect 是状态标识符 myonLoad要先执行用来改变标识符成为1的之后,mylogin_onclick继续执行 判断是1的时候 进行if下的主体模块方法
我在mouted生命周期里面是这么写的
`
mounted() {this.myonLoad().then((resolve) => {
if (resolve) {
this.mylogin_onclick();
}
});
},
`
控制台这样执行
怎么样能让 myonLoad 先执行完 修改完了标识符的值之后 mylogin方法再执行呢
回答
myonLoad() { return new Promise((resolve, reject) => {
try {
var s_pnp = new SoftKey3W();
s_pnp.Socket_UK.onopen = function () {
bConnect = 1; //代表已经连接,用于判断是否安装了客户端服务
console.log("我先执行1", bConnect);
};
//在使用事件插拨时,注意,一定不要关掉Sockey,否则无法监测事件插拨
s_pnp.Socket_UK.onmessage = function got_packet(Msg) {
var PnpData = JSON.parse(Msg.data);
if (PnpData.type == "PnpEvent") {
//如果是插拨事件处理消息
if (PnpData.IsIn) {
alert(
"UKEY已被插入,被插入的锁的路径是:" + PnpData.DevicePath
);
} else {
alert(
"UKEY已被拨出,被拨出的锁的路径是:" + PnpData.DevicePath
);
}
}
resolve(true)
};
s_pnp.Socket_UK.onclose = function () {};
// resolve(true);
} catch (e) {
alert(e.name + ": " + e.message);
reject(false)
return false;
}
});
},
以上是 JS 中关于两个promise函数执行顺序的问题 的全部内容, 来源链接: utcz.com/a/40160.html