下面概述了在控制台上显示两个简单步骤的承诺,然后在第一步完成后显示其他内容。
我想了解如何解决这个承诺,并允许第二步完成。
var lookup_documents = new Promise(
function(resolve, reject) {
console.log("1st");
//resolve(); - How do I do this outside of this function?
}
);
lookup_documents.then(
function() {
console.log("2nd");
}
);
答案 0 :(得分:0)
通常,当你想将一些异步函数包装到一个promise中时,你会使用new Promise()
,例如:
new Promise((resolve, reject) => {
makeAjaxCall((err, data) => {
if(err) return reject(err);
else return resolve(data);
})
});
还有其他Promise实现,例如q
,您可以在其中创建"延迟"返回promise的对象......类似的东西是:
function makeAjaxCallPromise() {
let deferred = Q.defer();
makeAjaxCall((err, data) => {
if(err) return deferred.reject(err);
else return deferred.resolve(data);
});
return deferred.promise;
}
对于您想要的特定事物......我能想到的是在promise函数范围之外声明一个变量并将其设置为asign,如:
let resolver, rejecter;
new Promise((resolve, reject) => {
resolver = resolve;
rejecter = reject;
});
makeAjaxCall((err, data) => {
if(err) return resolver(err);
else return rejecter(data);
});
但这看起来并不太好并且可能导致错误......尝试将所有内容包装在Promise函数中。
答案 1 :(得分:0)
你可以这样做,使用你的例子 - 如果我理解你的话。
Boolean yourBool = getIntent().getExtras().getBoolean("BoolName");