我有这样的链接承诺:
function abcd() {
var date = new Date();
document.body.innerHTML = "<h1>Today is: " + date + "</h1>";
}
setInterval(abcd, 1000);
现在我想在doSomething1().then(doSomething2).then(doSomething3) ...
方法返回的每个Promise对象上放置一个标记,以便以后进行代码分析。 .then()
作为匿名函数,其上下文默认为doSomething
对象。有没有办法设置处理程序的上下文window
指向新创建的Promise对象?
另外,有没有办法列出附加到特定this
对象的所有即时then()
?
答案 0 :(得分:0)
您可以定义要使用对象调用的函数,并使用arrow function作为执行者传递给Promise
构造函数,以保留this
引用定义函数的对象的上下文。< / p>
let promises = {
marker: "I'm before the first step Promise!",
doSomething1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.marker = "I'm the first step Promise!";
console.log(this.marker);
resolve(this);
}, Math.floor(Math.random() * 900))
})
},
doSomething2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.marker = "I'm the second step Promise!";
console.log(this.marker);
resolve(this);
}, Math.floor(Math.random() * 1200))
})
},
doSomething3() {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.marker = "I'm the third step Promise!";
console.log(this.marker);
resolve(this);
}, Math.floor(Math.random() * 1500))
})
}
}
console.log(promises.marker);
promises.doSomething1()
.then(promises.doSomething2)
.then(promises.doSomething3)
&#13;