2016-06-24 75 views
0

使用ES2015,我可以從外部解決承諾,即在其創建後觸發解析嗎?我可以從外面解決承諾嗎?

const promise = new Promise(); 
promise.then(() => foo()); 
promise.resolve(); // foo() gets executed 
+1

*之後*不一定與* outside *有關?一般來說,不,並且沒有必要。另外一個'promise.resolve'方法肯定是一個反模式。 – Bergi

+1

您可能想看看[承諾尚未創建的承諾](http://stackoverflow.com/q/37426037/1048572) – Bergi

回答

2

當然可以。

let resolvePromise = null; 
const promise = new Promise(resolve => resolvePromise = resolve); 
promise.then(foo => console.log(foo)); 
resolvePromise('bar'); 
0

當然可以。只需參考外部的功能並調用它即可。 由於函數是對象(它們作爲變量存儲爲參考),所以我們可以在外部引用它之後從外部調用解析函數。

var a; 
    function b(){ 
     var c = new Promise(function(resolve, reject){ 
      a=resolve; 
     }); 
     return c; 
    } 
    b().then((data) => { 
    console.log(data); 
    } 
    ); 
    a("hai"); 
+0

它與其他答案基本相同。 – zeroflagL