我正在尝试编写Windows应用程序。我很想知道当你传递WinJS.Promise.Timeout()未定义值而不是数值毫秒值时会发生什么。它是否等同于将函数传递给值0,或者行为是不可预测的?
答案 0 :(得分:0)
根据code,当未指定此值时,将调用setImmidiate函数。这意味着当前任务完成时履行承诺。
当您传递0时,内部使用JavaScript setTimeout函数。某些系统上此功能限制为每秒250次呼叫。将'undefined'传递给WinJS.Promise.Timeout()时,它不使用setTimeOut调用。所以在某些情况下可能会快一点。
您可以在MSDN上找到有关setImmidate函数的更多信息。
答案 1 :(得分:0)
正如Sorskoot所解释的那样,代码清楚地表明,如果间隔为零或未定义,则调用setImmediate。文档(http://msdn.microsoft.com/en-us/library/windows/apps/xaml/br229729.aspx)明确说明了这一点:
timeout
Type: Number
The timeout period in milliseconds. If this value is zero or not specified, msSetImmediate is called, otherwise setTimeout is called.
这只是说零或未定义的超时应该只产生UI线程然后完成。