2013-07-12 19 views
0

這是我的異步搜索功能。告訴呼叫者一個函數'很好',一個承諾不能滿足

function searchAsync(searchText) { 
    return new WinJS.Promise(function (complete) { 
     if (searchText.length > 2) { 
      // Asynchronously query the API with the search text 
     } else { 
      // Can't return a promise, since 'searchText' is too short 
     } 
    }); 
} 

假設主叫方不提供searchText超過2個字符,我怎麼能告訴他,他必須提供更長的搜索文本?

我可以返回null ......但是,由於呼叫者期望承諾,我寧願告訴他,沒有承諾可以給予。

+1

只是立即履行承諾與錯誤行動。 – dandavis

+1

@dan,我對重複的評論表示歉意,我沒有解析'履行......有錯誤行爲「。我將保持鏈接到[wrapError()](http://msdn.microsoft.com/en-us/library/windows/apps/br229784.aspx),並刪除其餘的。 –

+0

好吧,當事情很好的時候,你答應回來。你不能在啓動搜索的函數中處理錯誤,調用第二個參數來調用錯誤處理程序? – dandavis

回答

3

添加一個錯誤處理程序,並在Promise處於錯誤狀態時調用它。

function searchAsync(searchText) { 
    return new WinJS.Promise(function (complete, error) { 
     if (searchText.length > 2) { 
      // Asynchronously query the API with the search text 
      complete(results); 
     } else { 
      // Can't return a promise, since 'searchText' is too short 
      error(); 
     } 
    }); 
} 
相關問題