我想使用promises,但我有一个回调API,格式如下:
window.onload; // set to callback
...
window.onload = function() {
};
Run Code Online (Sandbox Code Playgroud)
function request(onChangeHandler) {
...
}
request(function() {
// change happened
...
});
Run Code Online (Sandbox Code Playgroud)
function getStuff(dat, callback) {
...
}
getStuff("dataParam", function(err, data) {
...
})
Run Code Online (Sandbox Code Playgroud)
API;
API.one(function(err, data) {
API.two(function(err, data2) {
API.three(function(err, data3) {
...
});
});
});
Run Code Online (Sandbox Code Playgroud)
我需要创建一个JavaScript Promise,在特定条件为真之前无法解析.假设我有第三方库,我需要等到该库中存在某种数据条件.
我感兴趣的场景是除了简单的轮询之外无法知道何时满足这个条件的场景.
我可以创建一个等待它的承诺 - 这段代码可以工作,但有没有更好或更简洁的方法解决这个问题?
function ensureFooIsSet() {
return new Promise(function (resolve, reject) {
waitForFoo(resolve);
});
}
function waitForFoo(resolve) {
if (!lib.foo) {
setTimeout(waitForFoo.bind(this, resolve), 30);
} else {
resolve();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
ensureFooIsSet().then(function(){
...
});
Run Code Online (Sandbox Code Playgroud)
我通常会实现最大轮询时间,但不希望这样在这里解决问题.