我有下一个Javascript事件处理程序:
function eventHandler(e) {
//doSomething 1...
asyncFunctionWhichReturnPromise(data).then(function (data) {
//doSomething 2...
e.data = {
Id: data.Id,
Type: "Type"
};
});
//doSomething 3...
}
所以,当我运行代码" // doSomething 3 ..."之前执行" // doSomething 2 ..."但由于它是一个事件处理函数,我需要在" // doSomething 2 ..."中准备数据。将引发下一个事件之前的代码块。我怎么能用q.js(Kris Kowal的承诺库)来做呢?
重要补充信息:实际上我需要阻止// doSomething 2 ...在离开eventHandler之前执行,因为e.data初始化将在下一步使用 - 剑道ui上传将在服务器上上传数据。
答案 0 :(得分:0)
只需移动回调函数内的doSomething 3...
代码
function eventHandler(e) {
//doSomething 1...
asyncFunctionWhichReturnPromise(data).then(function (data) {
//doSomething 2...
//doSomething 3...
});
}
如果您希望更明显doSomething 3...
之后应该运行,可以将其置于函数内
function eventHandler(e) {
//doSomething 1...
asyncFunctionWhichReturnPromise(data).then(function (data) {
//doSomething 2...
doSomething3();
});
function doSomething3() {
//doSomething 3...
}
}