簡體   English   中英

解決JavaScript承諾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM