[英]resolving a javascript promise
下面概述了一個承諾,該承諾有兩個簡單的步驟在控制台上顯示內容,然后在第一步完成后顯示其他內容。
我正在嘗試了解如何兌現承諾,並讓第二步完成。
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");
}
);
通常,當要將一些異步函數包裝到new Promise()
時,可以使用new Promise()
,例如:
new Promise((resolve, reject) => {
makeAjaxCall((err, data) => {
if(err) return reject(err);
else return resolve(data);
})
});
還有其他Promise實現,例如q
,您可以在其中創建返回“ promise”的“ deferred”對象……類似的東西是:
function makeAjaxCallPromise() {
let deferred = Q.defer();
makeAjaxCall((err, data) => {
if(err) return deferred.reject(err);
else return deferred.resolve(data);
});
return deferred.promise;
}
對於您想要的特定事物...我所能想到的就是在promise函數范圍之外聲明一個變量並將其賦值,例如:
let resolver, rejecter;
new Promise((resolve, reject) => {
resolver = resolve;
rejecter = reject;
});
makeAjaxCall((err, data) => {
if(err) return resolver(err);
else return rejecter(data);
});
但這看起來不太好,並且可能導致錯誤...嘗試將所有內容包裝在Promise函數中。
您可以使用示例來完成此操作-如果我對您的理解正確的話。
var lookup_documents = function() {
return new Promise(function(resolve, reject) {
console.log("1st");
resolve();
});
};
lookup_documents().then(function() {
console.log("2nd");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.