Если это для разных страниц, нет способа.
Я использую эту же страницу, вы можете использовать ее и использовать пейджинг, чтобы получить все 700 записей всего за 7 вызовов API:
/page-id/posts?fields={fields}&limit=100
Конечно, вы получите ВСЕ сообщения таким образом. Нет способа получить его для массива случайных идентификаторов сообщений.
Вы можете настроить предупреждение для проверки забытых операторов возврата с помощью комбинации свойств wForgottenReturn
и longStackTraces
из объекта конфигурации. wForgottenReturn
является свойством warning
и должно иметь значение true и является единственным типом предупреждения, который можно настроить отдельно. Соответствующий ключ переменной среды - BLUEBIRD_W_FORGOTTEN_RETURN
. Вы можете проверить документацию для получения дополнительной информации.
const Bluebird = require('bluebird');
Bluebird.config({
warnings: {
wForgottenReturn: true
}, longStackTraces: true,
});
Bluebird.resolve(1).then(() => {
Bluebird.resolve(2);
}).then(two => console.log(two));
Запуск программы в консоли дает мне:
Warning: a promise was created in a handler at /home/adrianpop/test/bb.js:11:13 but was not returned from it, see
at Function.Promise.cast (/home/adrianpop/Downloads/Test/node_modules/bluebird/js/release/promise.js:196:13)
undefined
, что является желаемым вами результатом.
Вы также можете запустить приложение как:
BLUEBIRD_LONG_STACK_TRACES=1 BLUEBIRD_WARNINGS=1 node app.js
, производя тот же результат.
Приветствия!
Редактировать:
Из этого выпуска на github мы имеем:
Итак, проблема в том, что Nodejs 6.x по умолчанию не отображает трассировки стека для предупреждений. Есть опция командной строки (--trace-warnings), чтобы включить их. Без этой опции предупреждения Bluebird намного менее полезны. Без стека вызовов может быть очень трудно выяснить, откуда возникло предупреждение.
blockquote>Более подробную информацию также можно найти:
- здесь (выпуск github)
это ТАК вопрос.
Отвечая на ваш вопрос одним словом,
Как можно исправить вывод вывода предупреждения?
blockquote>Включив трассировки длинных стеков ].
const Bluebird = require('bluebird'); Bluebird.config({ warnings: true, longStackTraces: true }) Bluebird.resolve(1) .then(() => { Bluebird.resolve(2); // should warn about forgotten return }) .then(two => console.log(two));
Теперь вы должны получить новое демо , которое сообщит вам об этой ошибке:
(node:65) Warning: a promise was created in a handler at evalmachine.<anonymous>:16:14 but was not returned from it, see http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it at Function.Promise.cast (/home/runner/node_modules/bluebird/js/release/promise.js:196:13) undefined
promise.js файл:
Promise.cast = function (obj) { var ret = tryConvertToPromise(obj); if (!(ret instanceof Promise)) { ret = new Promise(INTERNAL); ret._captureStackTrace(); //promise.js:196:13 ret._setFulfilled(); ret._rejectionHandler0 = obj; } return ret; };
Помните, что в Node.js вы можете настроить предупреждения и длинные трассировки стека для всего процесса, используя переменные среды.
Переход к исходному коду
bluebird
var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && (debugging || util.env("BLUEBIRD_WARNINGS"))); var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN"));
И
Promise.config = function(opts) { opts = Object(opts); if ("longStackTraces" in opts) { if (opts.longStackTraces) { Promise.longStackTraces(); } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { disableLongStackTraces(); } } if ("warnings" in opts) { var warningsOption = opts.warnings; config.warnings = !!warningsOption; wForgottenReturn = config.warnings; if (util.isObject(warningsOption)) { if ("wForgottenReturn" in warningsOption) { wForgottenReturn = !!warningsOption.wForgottenReturn; } } } if ("cancellation" in opts && opts.cancellation && !config.cancellation) { if (async.haveItemsQueued()) { throw new Error( "cannot enable cancellation after promises are in use"); } Promise.prototype._clearCancellationData = cancellationClearCancellationData; Promise.prototype._propagateFrom = cancellationPropagateFrom; Promise.prototype._onCancel = cancellationOnCancel; Promise.prototype._setOnCancel = cancellationSetOnCancel; Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback; Promise.prototype._execute = cancellationExecute; propagateFromFunction = cancellationPropagateFrom; config.cancellation = true; } if ("monitoring" in opts) { if (opts.monitoring && !config.monitoring) { config.monitoring = true; Promise.prototype._fireEvent = activeFireEvent; } else if (!opts.monitoring && config.monitoring) { config.monitoring = false; Promise.prototype._fireEvent = defaultFireEvent; } } return Promise; };
По умолчанию отслеживание длинных стеков, предупреждения, мониторинг и отмена [ 1144] все отключены, помещая их
false
в производственную среду. Они обнаруживаются и автоматически включаются при включении отладчика в среде разработки.Я предлагаю вам еще раз просмотреть документацию Bluebird .
Promise.config
Promise.config(Object { warnings: boolean=false, longStackTraces: boolean=false, cancellation: boolean=false, monitoring: boolean=false } options) -> Object;
Настройка трассировки длинных стеков, предупреждений, мониторинга и отмены. Обратите внимание, что хотя здесь по умолчанию используется
false
, может быть обнаружена среда разработки, которая автоматически разрешает длинные трассировки стека и предупреждения.Promise.config({ // Enable warnings warnings: true, // Enable long stack traces longStackTraces: true, // Enable cancellation cancellation: true, // Enable monitoring monitoring: true });
Вы можете настроить предупреждение для проверки забытых операторов возврата с помощью
wForgottenReturn
:Promise.config({ // Enables all warnings except forgotten return statements. warnings: { wForgottenReturn: false } });
wForgottenReturn
- единственный тип предупреждения, который можно настроить отдельно. Соответствующий ключ переменной среды -BLUEBIRD_W_FORGOTTEN_RETURN
.
В Node.js вы можете настроить предупреждения и длинные трассировки стека для всего процесса, используя переменные среды:
BLUEBIRD_LONG_STACK_TRACES=1 BLUEBIRD_WARNINGS=1 node app.js
Обе функции включаются автоматически, если установлена переменная среды
BLUEBIRD_DEBUG
или если переменная окруженияNODE_ENV
равна"development"
.Использование значения
0
явным образом отключит функцию, несмотря на то, что среда отладки будет иным образом активирована:# Warnings are disabled despite being in development environment NODE_ENV=development BLUEBIRD_WARNINGS=0 node app.js
Возможно, вы захотите проверить этот официальный источник у одного из участников Bluebird Contributor [ 1141]
Похоже, что для отображения предупреждений необходимо включить длинные трассировки стека. Вы можете использовать объект config, чтобы включить их ( документы ) ( демо ):
Bluebird.config({
warnings: true,
longStackTraces: true
});
Или переменные среды ( документы ) ( demo ):
В Node.js вы можете настроить предупреждения и длинные трассировки стека для всего процесса, используя переменные среды:
BLUEBIRD_LONG_STACK_TRACES=1 BLUEBIRD_WARNINGS=1 node app.js
Обе функции автоматически включается, если установлена переменная среды BLUEBIRD_DEBUG или если переменная среды NODE_ENV равна "development".
blockquote>и
Чтобы включить отслеживание длинных стеков и предупреждения при разработке узла:
$ NODE_ENV=development node server.js
Чтобы включить отслеживание длинных стеков и предупреждения при создании узла: [1118 ]
$ BLUEBIRD_DEBUG=1 node server.js
См. Переменные среды .
blockquote>
Отредактируйте, почему это необходимо:
Кажется, что как предупреждения, так и длинные трассировки стека отключены по умолчанию и включены только при обнаружении среды разработки, см. здесь :
Обратите внимание, что хотя здесь по умолчанию установлено значение false, может быть обнаружена среда разработки, которая автоматически разрешает отслеживание длинных стеков и предупреждения.
blockquote>Чтобы предупреждения отображались в производственной среде, нужно не только включать предупреждения, но и включать длинные трассировки стека, см. здесь и здесь [ 1111]. [1 123]