使用ES2015,我可以從外部解決承諾,即在其創建後觸發解析嗎?我可以從外面解決承諾嗎?
像
const promise = new Promise();
promise.then(() => foo());
promise.resolve(); // foo() gets executed
使用ES2015,我可以從外部解決承諾,即在其創建後觸發解析嗎?我可以從外面解決承諾嗎?
像
const promise = new Promise();
promise.then(() => foo());
promise.resolve(); // foo() gets executed
當然可以。
let resolvePromise = null;
const promise = new Promise(resolve => resolvePromise = resolve);
promise.then(foo => console.log(foo));
resolvePromise('bar');
當然可以。只需參考外部的功能並調用它即可。 由於函數是對象(它們作爲變量存儲爲參考),所以我們可以在外部引用它之後從外部調用解析函數。
var a;
function b(){
var c = new Promise(function(resolve, reject){
a=resolve;
});
return c;
}
b().then((data) => {
console.log(data);
}
);
a("hai");
它與其他答案基本相同。 – zeroflagL
*之後*不一定與* outside *有關?一般來說,不,並且沒有必要。另外一個'promise.resolve'方法肯定是一個反模式。 – Bergi
您可能想看看[承諾尚未創建的承諾](http://stackoverflow.com/q/37426037/1048572) – Bergi