我正在閱讀YDKJS系列的Async &性能手冊,並且在展示構造函數模式時遇到了麻煩。JS承諾在YDKJS中揭示構造函數
下面是書中給出的例子:
function foo(x) {
// start doing something that could take a while
// construct and return a promise
return new Promise(function(resolve,reject){
// eventually, call `resolve(..)` or `reject(..)`,
// which are the resolution callbacks for
// the promise.
});
}
var p = foo(42);
function bar(fooPromise) {
// listen for `foo(..)` to complete
fooPromise.then(
function(){
// `foo(..)` has now finished, so
// do `bar(..)`'s task
},
function(){
// oops, something went wrong in `foo(..)`
}
);
}
bar(p);
我有兩個問題:
我覺得意圖是不暴露的決心和拒絕的邏輯外,這將創建一個良好的承諾邏輯與在「監聽」Promise的函數(在這種情況下爲
bar()
)中的.then()
會發生什麼相關。我在這裏跟蹤?該示例
foo()
讓我困惑。在評論// start doing something that could take a while
,這究竟是什麼?這是你的異步電話會在哪裏?它不應該在return語句中的函數內嗎?我不明白這是否會起作用。
爲了確保我清楚,你說我是正確的,你想要做的那些「需要一段時間」(ajax,setTimeout等)的任務應該在解析器('新的承諾(功能(解決,拒絕){//東西需要一段時間去這裏}') – Dan
@丹是的,除非作者有理由在評論的那一行留下評論。評論意味着什麼以及爲什麼代碼中的評論位置是它的位置? – guest271314