В общем, Решение означает, что это будет успешным или неудачным. Это то, что вызывает вызов действий then
. Это может произойти ровно один раз для любого данного обещания.
выполнить означает «решить» успешно. Это вызовет успешные обратные вызовы в действиях then
. Сопротивлением «выполнить» для отказа является отклонить.
С другой точки зрения, вы можете классифицировать статус каких-либо надежд на определенный момент времени, как «неразрешенный» (иногда также называют в ожидании) или «разрешить», и «решен» имеет суб-статусы «выполнено» и «отклонено». Обещание в статусе «выполнено» имеет значение , а обещание в статусе «отклонено» имеет причину .
Специфические методы в каждом API, используемые для представления этих понятий, различаются. И, к сожалению, есть много сообщений в блогах и документов, которые смешивают эти термины, в частности, используя «fullfill», когда они подразумевают «решение» или наоборот.
Q
Я не знаю, Q очень хорошо, но это, кажется, что его метод resolve
фактически выполняет обещание (курсив мой):
Calling решительность со значением причины, не обещают обещают быть выполнено с этим значением.
Твист, однако, заключается в том, что вы также можете позвонить deferred.resolve
с обещанием, и в этом случае первого обещание более или менее предполагающее состояние переданного в обещании. Например, если обещанное обещание находится в состоянии ожидания, обещание принимает ожидающее состояние принятого обещания. Это подразумевает слегка нечетную семантику, что метод с именем resolve
фактически не разрешает обещание.
Я не вижу метод 'execute' в документации' q'. https://github.com/kriskowal/q/wiki/API-Reference – Barmar
см. также [Какая правильная терминология для javascript-обещаний] (http://stackoverflow.com/a/29269515/1048572) – Bergi